1

@OneToMAny的实体内部有关系。

是否可以禁用 jpa 为连接列生成选择?因为我的主表中有很多记录,并且在选择它们时,每条记录都会对连接列执行选择。我想禁用此选择可以吗?

更新: 我尝试插入 fetch LAZY 但它仍然为 Table02f 和 Table03f 创建一个选择...

这是我的代码:

 public class Table01f implements Serializable {

    @OneToMany(fetch=FetchType.LAZY , cascade = CascadeType.ALL, mappedBy = "table01f")
    private List<Table02f> table02fList;

    //getter & setter...
}

public class Table02f implements Serializable {

    @JoinColumn(name = "F2PRP", referencedColumnName = "F1PRP", insertable = false, updatable = false)
    @ManyToOne(optional = false)
    @JsonIgnore
    private Table01f table01f;

    @OneToMany(fetch=FetchType.LAZY , cascade = CascadeType.ALL, mappedBy = "table02f")
    private List<Table03f> table03fList;

    //getter & setter...
}

public class Table03f implements Serializable {

    @JoinColumns({
        @JoinColumn(name = "F3PRP", referencedColumnName = "F2PRP", insertable = false, updatable = false),
        @JoinColumn(name = "F3BRN", referencedColumnName = "F2BRN", insertable = false, updatable = false)})
    @ManyToOne(optional = false)
    @JsonIgnore
    private Table02f table02f;

//getter & setter...
}

提前致谢。

4

2 回答 2

3

只需将 fetch 类型添加LAZY到您的@OneToMany关系中:

@OneToMany(fetch=FetchType.LAZY)

当您加载主要实体的列表时,JPA 不会为此关系填充您的列表,从而避免生成SELECT.

只需查看 JPA 文档中的此功能,即可了解如何使用它。

于 2013-06-20T10:47:26.113 回答
1

如果您不需要数据,请将其设为 LAZY(通常总是将所有内容设为 LAZY)。

如果你需要数据,那么你可以使用批量抓取,或者加入抓取。

http://java-persistence-performance.blogspot.com/2010/08/batch-fetching-optimizing-object-graph.html

于 2013-06-20T13:56:24.760 回答