를 반환JPA는 EclipseLink @OneToMany 내가 내장 된 ID를 사용하고 빈 세트
@Embeddable
public class EntityId {
private long id;
}
을 그리고있는 다음 표 :
final EntityManager em = injector.getInstance(EntityManager.class);
em.getTransaction().begin();
Master master = new Master(EntityId.next());
SlaveLeft slaveLeft = new SlaveLeft(EntityId.next());
SlaveRight slaveRight = new SlaveRight(EntityId.next());
Config config = new Config(EntityId.next(), master, slaveLeft, slaveRight);
em.persist(master);
em.persist(slaveLeft);
em.persist(slaveRight);
em.persist(config);
em.getTransaction().commit();
final Master master1 = em.find(Master.class, master.getId());
System.out.println(master1.getConfigs());
: 다음 데이터베이스를 채우는
@Entity
public class Master {
@EmbeddedId private EntityId id;
@OneToMany(mappedBy = "master")
Set<Config> configs;
}
@Entity
public class SlaveLeft {
private @EmbeddedId EntityId id;
}
@Entity
public class SlaveRight {
private @EmbeddedId EntityId id;
}
@Entity
public class Config {
@EmbeddedId private EntityId id;
@ManyToOne
@JoinColumn(name = "MASTER_ID", referencedColumnName = "id")
private Master master;
@ManyToOne
@JoinColumn(name = "LEFT_ID", referencedColumnName = "id")
private SlaveLeft slaveLeft;
@ManyToOne
@JoinColumn(name = "RIGHT_ID", referencedColumnName = "id")
private SlaveRight slaveRight;
}
문제는 master1.getConfigs()가 빈을 반환한다는 것입니다.
나는 무슨 문제가 있습니까?
마스터의 구성 필드는 어떻게 생겼습니까? Toplink/Eclipselink와 같은 일부 JPA 구현은 본질적으로 계산 된 필드의 값을 캐시하므로 config 클래스를 생성 할뿐만 아니라 Master의 "configs"set/list 필드에도 추가해야합니다. – SplinterReality