Я пытаюсь сохранить данные в хранилище данных Google App с помощью JPA, и у меня есть некоторые проблемы.Персистентные данные в хранилище данных google app engine
Мой код:
try {
for (int i = 1; i <= 10; i++) {
Employee emp = new Employee();
emp.setFirstName("John" + i);
emp.setLastName("Doe" + i);
emp.setAge(i);
em.persist(emp);
em.refresh(emp);
}
em.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
em.close();
}
Когда я запускаю его, данные сохраняются, но 2 ошибки происходит:
javax.persistence.TransactionRequiredException: Эта операция требует сделки пока она не активна -> линия em.flush();
и
java.lang.NullPointerException на org.datanucleus.ObjectManagerImpl.flushInternalWithOrdering (ObjectManagerImpl.java:3887) -> линия em.close();
Кто-нибудь знает, как их исправить?
Спасибо.
Он работает, спасибо. Но могу ли я сделать это без транзакции? (Только для информации) –
вы можете 'persist' без необходимости совершать транзакции, но, как вы видите, вам нужна транзакция, если вы хотите' flush'. Я советую вам использовать txns, так как вы сохраняете несколько данных. В случае ошибки вы можете просто откат. – ogzd