我試圖將spring xml配置轉換爲java配置。這通過XML配置完美工作。但是,如果我使用java配置初始化程序,則會引發以下異常。當它嘗試運行JQL時會發生這種情況。應用程序雖然啓動正確(所有JPA映射初始化)。InvalidDataAccessApiUsageException:執行更新/刪除查詢Spring XML到Java配置
org.springframework.dao.InvalidDataAccessApiUsageException: Executing an update/delete query; nested exception is javax.persistence.TransactionRequiredException: Executing an update/delete query
at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:410) [spring-orm-4.1.5.RELEASE.jar:4.1.5.RELEASE]
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:216) [spring-orm-4.1.5.RELEASE.jar:4.1.5.RELEASE]
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:417) [spring-orm-4.1.5.RELEASE.jar:4.1.5.RELEASE]
at org.springframework.dao.support.ChainedPersistenceExceptionTranslat
以下是我的持久化初始化類。閱讀的位提示我這與交易沒有正確啓動有關。我已經將調試點放到了這些方法中的每一個,但是在服務器啓動或以後的任何時候,transactionManager方法都不會被執行。我不知道我究竟做錯了:(。完美持久時,通過初始化的persistence.xml相同的基於代碼的作品。在道
訪問該方法public void updateById(final Long id) {
final String sqlQuery = "UPDATE testtable w SET w.LAST_ACCESSED = :date WHERE w.testtable_ID = :testid";
final Query query = dao.createNativeQuery(sqlQuery);
query.setParameter("date", new Date());
query.setParameter("testid", id);
query.executeUpdate();
}
這些方法對於調試點......這些方法是豆宣言。所以這些只會在啓動過程中被擊中。關於例外情況,當您確切地知道這個錯誤時,我的意思是在做什麼操作時,您是否也可以使用該代碼。 – pvpkiran
謝謝,據我所知,服務器啓動調試模式,我打了其他兩個bean初始化方法,但tx初始化方法。這就是爲什麼我懷疑我錯過了事務初始化。編輯問題以顯示JQL方法。再一次,這對xml配置有效。 – Charith
在這個方法上使用'@Transactional'並試一試。 – pvpkiran