我有一个Topic
实体,应根据问卷版本对应一个Questionnaire
。我需要使用lazy fetch。
然而,懒惰提取不起作用。获取所有主题后,我看到Hibernate也会执行单独的SQL查询来获取每个主题的调查问卷。
public class Topic {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
@Access(AccessType.PROPERTY)
private long id;
@Column(name = "questionnaire_version")
private String questionVer;
@ManyToOne(optional = true, fetch = FetchType.LAZY)
@JoinColumns({
@JoinColumn(name = "id", referencedColumnName = "topic_id",
insertable = false, updatable = false),
@JoinColumn(name = "questionnaire_version", referencedColumnName = "version",
insertable = false, updatable = false)
})
@Access(AccessType.PROPERTY)
private Questionnaire questionnaire;
在这种情况下如何让懒惰的提取工作?我在这里需要OneToOne,我已经尝试过OneToOne和ManyToOne。
答案 0 :(得分:0)
父:
@OneToOne(optional = true, fetch = FetchType.LAZY, cascade = {CascadeType.ALL})
儿童:
@ManyToOne(optional = true, fetch = FetchType.LAZY, cascade = {CascadeType.ALL})
在任何一方使用级联。您可能希望根据您的要求在司法上使用ALL。