gpt4 book ai didi

java - JPA 多对多自引用关系与附加列

转载 作者:行者123 更新时间:2023-12-01 05:01:00 25 4
gpt4 key购买 nike

我正在使用 JPA 并使用 Hibernate 作为我的 SQL Server 数据库的提供程序。

我需要一个具有附加列或更多附加列的多对多自引用关系。

这是我当前的代码。我收到 Hibernate 异常:

@Entity
public class Person {
@OneToMany(cascade = CascadeType.ALL, mappedBy = "person", fetch = FetchType.EAGER)
private Set<Relation> relations;

@OneToMany(cascade = CascadeType.ALL, mappedBy = "relPerson", fetch = FetchType.EAGER)
private Set<Relation> inverseRelations;
}

@Entity
public class Relation implements Serializable {
@Id
@ManyToOne(cascade = CascadeType.ALL, optional = false, fetch = FetchType.EAGER)
@PrimaryKeyJoinColumn(name = "PersonID", referencedColumnName = "id")
private Person person;

@Id
@ManyToOne(cascade = CascadeType.ALL, optional = false, fetch = FetchType.EAGER)
@PrimaryKeyJoinColumn(name = "RelPersonId", referencedColumnName = "id")
private Person relPerson;
}

在运行时我从 hibernate 中得到一个异常:

org.hibernate.TransientObjectException: object references an unsaved transient instance

有什么方法可以更智能、更好地实现这一点吗?没有得到该异常。

谢谢,

最佳答案

如果对象未与Hibernate Session关联,则该对象将为Transient

当您保存Person时,Relation列表的实例可能是 transient (通常,该实例没有标识符值)。

Here是理解对象状态的更好方法。

关于java - JPA 多对多自引用关系与附加列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13381520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com