我有一個Camel項目,在創建一個controll bean之後,我們要清理一個數據庫日誌表。所以每次我們運行應用程序時,我們都會截斷一個名爲代理訂單的表。這是作爲命名查詢在Enity對象中設置的。Spring/Hibernate截斷/刪除表中的所有行 - 事務問題
@NamedNativeQuery(name="cleanOrderTable", query="TRUNCATE agent_orders",resultClass= AgentOrderEntity.class)
調用此查詢的代碼如下所示:
@Component("mgr")
public class Controller{
@PersistenceContext(unitName="camel")
private EntityManager em;
.......
@Transactional
public void clearHistoricalOrders() throws Exception{
Query query = em.createNamedQuery("cleanOrderTable");
query.executeUpdate();
}
}
調用清除歷史記錄的方法,我們得到一個錯誤javax.persistence.TransactionRequiredException: Executing an update/delete query
我已經嘗試了一切,UserTransaction
,em.getTransaction().begin
- 沒有什麼作品。任何想法如何我可以運行此查詢?
我們有以下TRAN管理器安裝在我們的應用程序的context.xml:
<tx:annotation-driven transaction-manager="txManager" />
<bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager"
p:dataSource-ref="dataSource">
<property name="entityManagerFactory" ref="emFactory" />
</bean>