컨테이너 관리 트랜잭션이있는 Stateless Session Bean이 있습니다. 관리되지 않는 엔티티를 데이터베이스에서 생성 (지속) 한 후에 반환하려고합니다. 즉, 내가 할 방법은 다음과 같습니다persist 후에 분리 한 경우 엔터티를 찾을 수없는 이유
@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 반환되지 않는 개체, 그건 괜찮아요. 그러나 다음에 ID로이 엔티티를 검색하려고하면 찾을 수 없습니다. 내가 을 분리하면 엔티티를 찾을 수 있지만 MyBean.create이 경우 엔티티를 반환하십시오. 내가 틀린 곳?
비즈니스 메서드에서 반환하기 전에 엔터티 필드를 일부 설정해야하므로 엔터티를 분리해야합니다. –
엔터티 대신 데이터 전송 개체를 반환하려는 것처럼 들립니다. 왜 DB에 상태를 나타내지 않는 엔티티를 반환하겠습니까? –
@TuukkaMustonen 분리 된 엔티티를 가져 오는 목적으로 DTO를 도입하는 것은 EJB 2.1 또는 이전 버전이 아니라면 정말 나쁜 생각입니다. 엔티티가 직렬화 가능하다고 생각하는 이유는 무엇입니까? – MaDa