У меня есть проект Camel, и после того, как мы создадим управляющий компонент, мы хотим очистить таблицу журнала БД. Поэтому каждый раз, когда мы запускаем приложение, мы ОБРАЩАЕМ таблицу, называемую агентскими заказами. Это настраивается в объекте Enity как именованный запрос.
@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 есть следующая настройка tran manager:
<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>