将2个数据源注入spring + hibernate应用程序总是抛出没有事务正在进行中的错误
我有Spring + JPA(Hibernate)项目,我连接到MsSQL数据库,现在我需要打开一个新连接,但这次它将用于MySQL 。 我正在使用XML配置
.... false .... .... false ....
然后我尝试使用片段注入entityManager
@PersistenceContext(unitName="dataSourcePU") EntityManager entityManager; @PersistenceContext(unitName="enduserDataSourcePU") EntityManager endUserEntityManager;
它仅适用于第一个数据库,但是当尝试在第二个数据库上保持时它会返回错误
javax.persistence.TransactionRequiredException: no transaction is in progress
我试图用@Transactional("transactionManager")
一次注释方法(其中包含persist()调用),另一次@Transactional(value = "enduserTransactionManager")
,第二个entityManager总是抛出相同的exception
我试图将persist()调用分成不同的方法,并注释两个方法@Transactional("transactionManager")
和@Transactional(value = "enduserTransactionManager")
但仍然得到相同的错误
@Transactional(value = "enduserTransactionManager") private void createNewBrandMySQL(Brand newBrand) {
和
@Transactional("transactionManager") public Integer createNewBrand(Brand newBrand) throws EntityDoesntExistException { //this method calls createNewBrandMySQL
通过使用entityManagerFactory
直接注入另一个em
修复
@PersistenceContext(unitName = "dataSourcePU") EntityManager entityManager; @Autowired @Qualifier("enduserEntityManagerFactory") EntityManagerFactory endUserEntityManagerFactory; EntityManager endUserEntityManager; @PostConstruct public void init() { endUserEntityManager = endUserEntityManagerFactory.createEntityManager(); }
- JPA / Hibernate:CriteriaBuilder – 如何使用关系对象创建查询?
- 如何使用JPA / Hibernate自动注册实体:未知实体
- 使用PostgreSQL和SQL Server Hibernate UUID
- 使用Hibernate时内存使用率很高
- Hibernate – Custom Dialect的BigDecimal列映射
- org.springframework.dao.DataIntegrityViolationException误报原因?
- 适用于Hibernate pojo中@lob的hibernate映射。 我们正在使用hibernate映射。 你能告诉我@lob注释的等价物吗?
- 在hibernate标准中使用sum()
- SessionFactory注入不起作用