JPA를 사용하여 Spring MVC와 함께 Entity List를 유지하고 싶지만 다음 오류가 발생합니다.오류 Entity List 오류 - java.lang.IllegalStateException : 공유 EntityManager에서 트랜잭션을 만들 수 없음
java.lang.IllegalStateException는 : 공유의 EntityManager에 거래를 만들 허용되지 않음 - 봄 트랜잭션을 사용하거나 EJB CMT 대신
나는 대답을 인터넷 검색을 시도하지만 내 상황에 솔루션을 적용 할 수 있습니다.
내 서비스 구현 방법은 다음과 같습니다.
@Override
@Transactional
public void saveTemporaryRecords(List<TemporaryRecord> temporaryRecords) {
for (TemporaryRecord temporaryRecord : temporaryRecords) {
try {
temporaryRecordDao.persist(temporaryRecord);
} catch (Exception e) {
e.printStackTrace();
}
}
}
temporaryRecordDao 인터페이스 및 방법이없는 구현들은 다음과 같은 방법으로 AbstractDao 구현 확장 :
:@PersistenceContext
protected EntityManager em;
@Override
public void persist(Entity entity) throws Exception {
if (entity == null) {
throw new Exception("Entity is null");
}
try {
em.persist(entity);
} catch (Exception ex) {
ex.getMessage();
em.getTransaction().rollback();
em.close();
}
}
운영자-servlet.xml 파일은 다음과 같은 관련 구성을 갖는다
<!-- Configure Entity Manager -->
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
p:dataSource-ref="dataSource"
p:packagesToScan="hu.beczdev.webbudgetapp.model">
<property name="jpaVendorAdapter">
<bean id="jpaVendorAdapter"
class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"
p:databasePlatform="org.hibernate.dialect.MySQL5Dialect" p:showSql="true" />
</property>
</bean>
<!-- Configure TransactionManager -->
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>