[英]mappedBy to many values
我有这个错误
mappedBy 引用了一个未知的目标实体属性
我知道问题是什么,我应该将 mappeby 值设为“person”而不是 person1 和 person2,但问题是我在 class 中有 2 个类型为 person (person1,person2) 的变量。姓名 !
在 class 人
@OneToMany(cascade = CascadeType.ALL,fetch = FetchType.LAZY, mappedBy = "person")
private Set<Contact> contact = new HashSet<>();
在 class 联系
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "id_person", nullable = false)
private Person person1;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "id_person", nullable = false)
private Person person2;
我的 MCD:在此处输入图像描述
mappedBy
用于表示现有关系的引用方,因此在 JPA 中,您不能真正将 map 它同时指向两个关系。 您必须分别为person1
和person2
定义mappedBy
属性。 要在一个属性中获取两个值,您可以做的是定义一个瞬态属性并将它们手动加入实体中。 就像是:
@Entity
public class Person {
// Other attributes
@OneToMany(cascade = CascadeType.ALL,fetch = FetchType.LAZY, mappedBy =
"person1")
private Set<Contact> contactOne = new HashSet<>();
@OneToMany(cascade = CascadeType.ALL,fetch = FetchType.LAZY, mappedBy =
"person2")
private Set<Contact> contactTwo = new HashSet<>();
@Transient
private Set<Contact> allContacts;
public Person() {
this.allContacts = new HashSet<>(contactOne);
allContacts.addAll(contactTwo);
}
}
但这仅适用于只读访问,您必须使值与contactOne
和contactTwo
的值保持同步。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.