使用字段创建双向一对一关系 这两个类,在子类的字段上都有一个注释要声明 这些字段代表双向关系。的领域 子类必须具有带参数的@Persistent注释 mappedBy =“...”,其中值是该字段的名称 父母班。如果填充了一个对象上的字段,那么 填充另一个对象上的相应参考字段 自动。
双向一对一关系可以做什么?
有人可以举个例子吗?
为什么我总是遇到这个错误。
类“com.example.datastore.Employee”具有字段“contactInfo” “mapped-by”指定为“contactInfo”。该字段不存在于 关系的目标(“com.example.datastore.ContactInfo”)!!
提前致谢!
答案 0 :(得分:1)
我尝试回答我从Hibernate / JPA(我认为是类似的)中学到的东西
似乎您的ContactInfo与Employee没有关系。要使用你所描述的双向一对一关系的例子,你会看到类似的东西(它可能在语法上不正确,只是为了让你明白):
public class Employee {
//... other relationship or fields
@OneToOne(mappedBy="employee") // the field in ContactInfo
private ContactInfo contactInfo;
}
public class ContactInfo {
@OneToOne
@JoinColumn("EMP")
private Employee employee;
}
持久层中的“真实”关系实际上由ContactInfo.employee主导。设置Employee.contactInfo不会导致持久层包含正确的数据。
我希望这个帮助也适用于JDO。 :P
答案 1 :(得分:1)
听起来你有一个一对一的Employee到ContactInfo。员工只有一个联系信息,联系信息只属于一个员工。这是双向的一对一。您的错误正在发生,因为“mapped-by”需要指定引用回该对象的另一个对象的属性名称。例如,如果你有
class Employee {
private ContactInfo contactInfo;
}
class ContactInfo {
private Employee employee;
}
然后当你映射Employee.contactInfo属性时,它的“mapped-by”将是“employee”,因为它是在ContactInfo中“映射”的属性。
答案 2 :(得分:0)
首先出现错误
该错误的含义是contactInfo
不是类com.example.datastore.ContactInfo
的字段。它们映射的字段必须是要映射到的类的字段\属性
二,双向制图的概念
这只是一对一或一对多关系中的两个表,其中两个实体都将了解其他实体。你并不总是需要它,这取决于情况和背景,但通常更常见的是双向一对多而不是一对一。
你的问题是一对一的,所以给你一个例子,说明两个实体何时需要通过Hibernate docs知道彼此连接表上的双向一对一关联是可能的,但是非常不寻常。 但是如果你真的希望能够获得任何表格(这是非常罕见的),那么你就可以一对一地创建双向
人和地址只是引用一个例子