懒惰获取JPA @OneToOne或@ManyToOne两个连接列

时间:2015-10-20 14:59:54

标签: java hibernate jpa

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

1 个答案:

答案 0 :(得分:0)

父: @OneToOne(optional = true, fetch = FetchType.LAZY, cascade = {CascadeType.ALL})

儿童: @ManyToOne(optional = true, fetch = FetchType.LAZY, cascade = {CascadeType.ALL})

在任何一方使用级联。您可能希望根据您的要求在司法上使用ALL。