Я хотел бы попросить вас о помощи по следующей проблеме. У меня есть метод:Задержка во время фиксации (с использованием 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;
Hi Ondrej, вы пробовали это: em.getTransaction(). begin(); // ваш код; em.getTransaction() фиксации(). как я предложил? Я думаю, что это сработает ... дайте мне знать – Paolof76
Эй, я пробовал обе возможности, но проблема в EntityManager и Transactions -> Мне запрещено использовать getTransaction() и манипулировать им, потому что это транзакция, управляемая контейнером. Теперь я изучаю некоторые свойства в настройке OpenJPA. – holmicz