我可以只用ID设置实体关系吗?

时间:2011-10-21 09:22:42

标签: hibernate jpa orm entity-relationship

我有一个JPA(Hibernate)实体:

@Entity class Transaction {

  @ManyToOne
  private Room room;

}

当我创建新的Transaction时,我知道它应该引用的Room的ID(但没有Room个对象)。我可以用这个信息以某种方式创建并保持Transaction,或者我真的需要:

Room room = em.find(roomId, Room.class);
em.persist(new Transaction(room, ...));

2 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,我发现了另一种解决方案,但可能不是最佳做法。

现在由于映射取决于 roomId ,因此在保存Transaction bean 之前创建一个构造函数 Room(Type roomId)并设置该bean。所以需要从数据库中获取数据。什么hibernate关心映射bean所需的Id。

我已使用此方法获取数据,我希望您在更新交易时不希望会议室更新。因此,设置插入,将映射的属性更新为false。

答案 1 :(得分:0)

您可以使用EntityManager.getReference()来获取相关实体的代理,而无需访问数据库。该代理是延迟初始化的,只有当您查询实体以外的ID时,才会对其进行初始化。