2013-06-18 5 views
1

Я хотел бы попросить вас о помощи по следующей проблеме. У меня есть метод:Задержка во время фиксации (с использованием JPA/JTA)

String sql = "INSERT INTO table ...." 
Query query = em.createNativeQuery(sql); 
query.executeUpdate(); 
sql = "SELECT max(id) FROM ......"; 
query = em.createNativeQuery(sql); 
Integer importId = ((BigDecimal) query.getSingleResult()).intValue(); 

for (EndurDealItem item : deal.getItems()) { 
     String sql2 = "INSERT INTO another_table"; 
     em.createNativeQuery(sql2).executeUpdate(); 
    } 

И после его запуска, данные не поручены (это занимает, как 10 или 15 минут, пока данные не будут поручены). Есть ли способ передать данные явным образом или инициировать фиксацию? И что заставляет транзакцию оставаться без изменений в течение столь длительного времени?

Причина, по которой мы используем nativeQueries, заключается в том, что мы экспортируем данные на некоторый общий интерфейс, и мы больше не используем данные.

Я хотел бы упомянуть, что транзакция управляется контейнером (Geronimo). EntityManager создается с помощью ссылки:

@PersistenceContext(unitName = "XXXX", type = PersistenceContextType.TRANSACTION) 
private EntityManager em; 
+0

Hi Ondrej, вы пробовали это: em.getTransaction(). begin(); // ваш код; em.getTransaction() фиксации(). как я предложил? Я думаю, что это сработает ... дайте мне знать – Paolof76

+0

Эй, я пробовал обе возможности, но проблема в EntityManager и Transactions -> Мне запрещено использовать getTransaction() и манипулировать им, потому что это транзакция, управляемая контейнером. Теперь я изучаю некоторые свойства в настройке OpenJPA. – holmicz

ответ

0

Использование явно транзакция фиксации:

EntityManager em = /* get an entity manager */; 
em.getTransaction().begin(); 
// make some changes 
em.getTransaction().commit(); 

Это должно работать. Время выполнения всей операции между .begin() и .end() зависит, конечно, также от цикла, который вы выполняете, от числа строки, которую вы вставляете, из положения базы данных (скорость сети вопросы) и т. д. ...

Смежные вопросы