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

Bar*_*lom 6 orm entity-relationship hibernate jpa

我有一个JPA(Hibernate)实体:

@Entity class Transaction {

  @ManyToOne
  private Room room;

}
Run Code Online (Sandbox Code Playgroud)

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

Room room = em.find(roomId, Room.class);
em.persist(new Transaction(room, ...));
Run Code Online (Sandbox Code Playgroud)

小智 5

您可以使用它EntityManager.getReference()来获取相关实体的代理,而无需访问数据库。该代理是延迟初始化的,仅当您查询实体 ID 以外的任何内容时才会初始化。