У меня есть полное веб-приложение Java EE со слоем представления и базой данных. Я использую derby с Glassfish 3.1 и JPA для сохранения постоянства. Я создал Read ok, но теперь у меня возникают проблемы с созданием и сохранением в базе данных. Я думаю, что я близок, но что-то не так с тем, как я пытаюсь создать.
Вот мой код EAO:
/**
* Session Bean implementation class XRSSeao
*/
@Stateless
@LocalBean
public class XRSSeao {
@PersistenceContext
EntityManager em;
public XRSSeao() {}
public void addEvent(String update){
Feed feed = new Feed();
feed.setStatus(update);
feed.setId(2);
em.getTransaction().begin();
em.persist(feed);
em.flush();
em.clear();
em.getTransaction().commit();
}
}
Это будет вызвано из другого EJB. Я также не хочу устанавливать идентификатор, так как это первичный ключ, который я хочу генерировать всякий раз, когда я вызываю метод persist. Ошибка, которую я получаю при тестировании:
«Вызвано: java.lang.IllegalStateException: Описание исключения: невозможно использовать EntityTransaction при использовании JTA».
Если вы не знаете, в чем проблема с этим кодом, но можете привести пример простого сохранения с автоматически сгенерированным первичным ключом, это будет так же полезно.
Это мой метод чтения, который работает:
public String lastUpdate(){
String resultString;
Query q = em.createQuery("SELECT x FROM Feed x WHERE x.id = 1");
List<Feed> ListofStatus = q.getResultList(); //alternatively you can use getResultList() for non 1 object is expected.
Feed returnStatusObject = ListofStatus.get(0);
resultString = returnStatusObject.getStatus();
return resultString;
}
Если мне не нужно использовать Transaction(), я не нашел в Интернете примера, который не использует его для создания.