相关疑难解决方法(0)

Hibernate:一对一延迟加载,可选= false

我遇到的问题是一对一的延迟加载在休眠中不起作用.我已经解决了,但仍然没有正确理解会发生什么.

我的代码(延迟加载在这里不起作用,当我拉人 - 地址也被提取):

@Entity
public class Person{

  @Id
  @SequenceGenerator(name = "person_sequence", sequenceName = "sq_person")
  @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "person_sequence")
  @Column(name = "id")
  private long personID;

  @OneToOne(mappedBy="person", cascade=CascadeType.ALL, fetch = FetchType.LAZY)
  private Adress address;
  //.. getters, setters
}

@Entity
public class Address {

  @Id
  @Column(name="id", unique=true, nullable=false)
  @GeneratedValue(generator="gen")
  @GenericGenerator(name="gen", strategy="foreign", parameters=@Parameter(name="property", value="person"))
  private long personID;

  @PrimaryKeyJoinColumn
  @OneToOne
  private FileInfo person;
}
Run Code Online (Sandbox Code Playgroud)

但是:如果我添加optional=falseOneToOne关系,延迟加载工作正常!

@OneToOne(mappedBy="person", cascade=CascadeType.ALL, …
Run Code Online (Sandbox Code Playgroud)

hibernate jpa lazy-loading one-to-one

58
推荐指数
2
解决办法
5万
查看次数

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

我有一个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)

orm entity-relationship hibernate jpa

6
推荐指数
1
解决办法
1516
查看次数