简体   繁体   English

JPA @OneToOne或@ManyToOne的延迟获取两个连接列

[英]Lazy fetch for JPA @OneToOne or @ManyToOne Two Join Columns

I have a Topic entity that should correspond to one Questionnaire based on questionnaire version. 我有一个Topic实体,应根据问卷版本与一个Questionnaire相对应。 I need to use lazy fetch. 我需要使用懒惰获取。

However, lazy fetch doesn't work. 但是,懒惰获取不起作用。 When getting all Topics, I see Hibernate also do individual SQL queries to fetch the questionnaire for each topic. 当获得所有主题时,我看到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;

How do I get lazy fetch working in this case? 在这种情况下,如何获取懒惰的访存? I need OneToOne here, and I've tried both OneToOne and ManyToOne. 我在这里需要OneToOne,并且已经尝试过OneToOne和ManyToOne。

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

Child: @ManyToOne(optional = true, fetch = FetchType.LAZY, cascade = {CascadeType.ALL}) 子级: @ManyToOne(optional = true, fetch = FetchType.LAZY, cascade = {CascadeType.ALL})

Use Cascading either side. 两侧均使用级联。 You may want to judicially use ALL as per your requirement. 您可能需要根据需要合法使用ALL。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM