У меня есть сеансный компонент без сохранения состояния с транзакциями, управляемыми контейнером.Я хочу вернуть неуправляемую сущность после создания (сохранения) ее в базе данных.Вот как я это делаю:
@Stateless
public class MyBean {
@EJB(name="MyController")
private MyController myController;
public MyEntity create(MyEntity entity) {
//...
myController.create(entity);
myController.preTransfer(entity);
return entity;
}
}
@Stateless
public class MyController {
@PersistenceContext(unitName = "myPU")
private EntityManager em;
public void create(MyEntity entity) {
//...
em.persist(entity);
}
public void preTransfer(MyEntity entity) {
if (em.contains(entity)) {
em.detach(entity);
}
//...
}
}
Я звоню MyBean.create , сущность успешно сохранена и MyBean.create возвращает неуправляемую сущность, это нормально.Но в следующий раз, когда я пытаюсь получить эту сущность по идентификатору, она не может быть найдена.Если я прокомментирую detach , сущность может быть найдена, но MyBean.create вернет управляемый объект в этом случае.Где я не прав?