我在Postgresql中有3个表,其中有3个spring数据实体。 这些是在实体方面名称相同的Parent,Child和Third表。
父表的列名称为col_p,该列与子表的id字段具有外键关系。
我需要两者之间存在双向的OneToOne关系。因此,我创建了如下实体:
父实体:
@Entity
@Table(name="parent")
@NamedQuery(name = "Parent.findAll", query = "SELECT p FROM Parent p")
public class Parent implements Serializable {
@OneToOne
@JoinColumn(name = "col_p")
private Parent parent;
}
子实体:
@Entity
@Table(name="child")
@NamedQuery(name="Child.findAll", query="SELECT c FROM Child c")
public class Child implements Serializable {
@OneToOne(mappedBy="child")
private Parent parent;
@ManyToOne
@JoinColumn(name="third_id")
private Third third;
}
使用该实体定义,当我使用通过spring数据jpa创建的父存储库保存父对象时,它可以正常工作。我可以在父表中看到一条记录。
现在,还有另一个名为Third的实体(如开头所述),其Child实体具有其属性之一,如下所示:
第三实体
@Entity
@Table(name="third")
@NamedQuery(name="Third.findAll", query="SELECT t FROM Third t")
public class Third implements Serializable {
@OneToMany(mappedBy="third")
private List<Child> child;
}
问题是,当我使用spring数据jpa来获取名为Third的实体,并希望它从子实体(third-> child-> parent)给我Parent实体时,父实体总是返回为null。 当我从第三张表中使用的ID开始查询表并从子项导航到父项时,父项确实有相应的记录。
我不是完全弄乱了我创建的实体中的关系,而不会为我获取父实体的记录。
请帮助。