大家好,
我是JPA的新手。我在下面的情景中面临一个问题;
我有一个可嵌入的类ContactInformation,如下所述;
@Embeddable public class ContactInformation {
@OneToMany
private Set<Phone> phoneList;
@Embedded
private Address address;
......
}
我有另一个实体类Employee,如下所示;
@Entity
@IdClass(EmployeeId.class)
public class Employee implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private String id;
@Id
private String name;
@ElementCollection
@CollectionTable(name = "employee_interests")
private Set<String> interests;
//COMPILE TIME ERROR LINE BELOW
@ElementCollection
private Set<ContractInformation> info;
...
}
在上面的例子中,我在上面提到的行中得到了编译时错误,因为“Mapping包含一个带有禁止映射”phoneList“的嵌入式”main.ContractInformation“,元素集合中的嵌入可能只包含多个 - 一对一或一对一的映射,必须位于关系的“拥有”一侧,不得使用连接表“
你能帮我解决一下这个问题吗?
提前感谢您的帮助!!
答案 0 :(得分:1)
正如错误所述,embeddable不能使用需要外键指向可嵌入的映射,例如OneToMany或ManyToMany。这是因为embeddable没有映射所需的外键的主键。将嵌入设置为完整实体。