gpt4 book ai didi

java - JPA EclipseLink @OneToMany 返回空集

转载 作者:行者123 更新时间:2023-11-29 06:10:44 26 4
gpt4 key购买 nike

我正在使用嵌入式 ID:

@Embeddable
public class EntityId {
private long id;
}

我有以下表格:

@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;
}

然后我填充数据库:

    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());

问题是 master1.getConfigs() 返回空。

我缺少什么来获得工作关系?

最佳答案

如果您使用另一个实体管理器来查找您的主人,它的配置集合可能会被填充。但是在这里,实体管理器从它的缓存中返回 master,并且由于您没有将配置放入 master 的配置集中,所以它不存在。

使用双向关系时,有责任维护双方的关系。 ORM 仅使用拥有方(没有 mappedBy 属性的一方)来决定关系是否存在,但对象图的一致性是您的责任。

关于java - JPA EclipseLink @OneToMany 返回空集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6952709/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com