JPAを使用してSpring MVCでEntity Listを永続化したいのですが、次のエラーが発生しました。エラーを永続化するEntity List - java.lang.IllegalStateException:共有EntityManagerでトランザクションを作成できません
java.lang.IllegalStateException:共有のEntityManager上でトランザクションを作成するために許可されていません - 代わりに春のトランザクションやEJB CMTを使用
私は答えをグーグルで試みたが、私の状況に解決策を適用することができませんでした。
私のサービス実装のメソッドは次のとおりです。 temporaryRecordDaoインターフェースとその実装
@Override
@Transactional
public void saveTemporaryRecords(List<TemporaryRecord> temporaryRecords) {
for (TemporaryRecord temporaryRecord : temporaryRecords) {
try {
temporaryRecordDao.persist(temporaryRecord);
} catch (Exception e) {
e.printStackTrace();
}
}
}
は任意の方法を持っていない、それらは以下の方法で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"/>