Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jpa 加载关系时堆栈溢出_Jpa_Eclipselink_Lombok - Fatal编程技术网

Jpa 加载关系时堆栈溢出

Jpa 加载关系时堆栈溢出,jpa,eclipselink,lombok,Jpa,Eclipselink,Lombok,我有以下关系: @Data @EqualsAndHashCode(callSuper=true) public class Room extends BasePersistable { private static final long serialVersionUID = 1L; @Column(nullable=false) private String uid; @Column(nullable=false) private String na

我有以下关系:

@Data
@EqualsAndHashCode(callSuper=true)
public class Room extends BasePersistable {

    private static final long serialVersionUID = 1L;

    @Column(nullable=false)
    private String uid;

    @Column(nullable=false)
    private String name;

    @Column(nullable=true)
    private String fullName;

    @Column(nullable=true, length=500)
    private String description;

    @Column(nullable=true)
    private String homepage;

    @Column(nullable=false)
    private String owner;

    @ManyToOne
    @JsonIgnoreProperties({"repos", "members"})
    private Organization organization;

我不确定这个问题是否与日食或龙目巨人制造的东西有关


编辑:我注意到有时它确实有效(当我删除整个数据库时)

您可以在
EqualsAndHashCode
注释中添加
exclude
属性。 例如,要从您的组织实体中排除
回购
集合,请使用:

@EqualsAndHashCode(callSuper = false, exclude={"repos"})
在组织类的构造函数之前


另外,如果有人正在阅读此答案,并且碰巧使用了Hibernate,我建议对您的收藏使用
Set
(而不是
List
)。除了避免可怕的
MultipleBagFetchException
Set
允许您在实体中有多个急切加载的集合。它还允许您使用
[left]join fetch
加载多个集合,如果您有时想使用lazy v.s.eager加载。

您可以在
EqualsAndHashCode
注释中添加
exclude
属性。 例如,要从您的组织实体中排除
回购
集合,请使用:

@EqualsAndHashCode(callSuper = false, exclude={"repos"})
在组织类的构造函数之前


另外,如果有人正在阅读此答案,并且碰巧使用了Hibernate,我建议对您的收藏使用
Set
(而不是
List
)。除了避免可怕的
MultipleBagFetchException
Set
允许您在实体中有多个急切加载的集合。它还允许您使用
[left]join fetch
加载多个集合,如果您有时想使用lazy v.s.eager加载。

由于这是一个hashCode调用,请检查hashCode方法中的逻辑-它们看起来是递归的,或者贯穿整个对象模型。您可能不想依赖于对任何集合属性调用hashCode。我使用的是lombok,因此我并不真正负责实现。无论如何,lombok有一个选项可以从计算中排除某些字段,这就成功了!由于这是一个hashCode调用,请检查hashCode方法中的逻辑-它们似乎是递归的或贯穿整个对象模型。您可能不想依赖于对任何集合属性调用hashCode。我使用的是lombok,因此我并不真正负责实现。无论如何,lombok有一个选项可以从计算中排除某些字段,这就成功了!
@EqualsAndHashCode(callSuper = false, exclude={"repos"})