私はCamelプロジェクトを持っています.Control Beanを作成した後、DBログテーブルをクリーンアップします。私たちがアプリケーションを実行するたびに、エージェント注文と呼ばれるテーブルをTRUNCATEします。これは、名前付きクエリとして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
を試してみました - 何も機能しません。どのように私はこのクエリを実行することができますか?
私たちは、アプリの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>