关系对
我们可以将 @OneToOne
/@OneToOne
关系对视为与 @OneToMany
/@ManyToOne
关系对相同,但增加了 “多”端的基数为 “至多 1”。
从关系数据库的角度来看,@OneToOne 关系对类似于 @OneToMany/@ManyToOne 对,但 增加了唯一性约束
,该约束有效地将 “多”端的基数限制为 “至多 1”。
从 Ebean 内部来看,@OneToOne(mappedBy=) 的作用非常类似于 @OneToMany(mappedBy=) [“多”端],而另一个 @OneToOne 的作用类似于 @ManyToOne [“一”端]。
@OneToOne “多”端
“多”端的 @OneToOne 具有 mappedBy
属性(类似于 @OneToMany)。
@Entity
public class Wheel ...
// has "mappedBy" (like @OneToMany)
// ... so we can think of this as the "many" side
// ... with cardinality limited to "at most 1"
@OneToOne(mappedBy = "wheel")
Tire tire;
...
@OneToOne “一”端
“一”端的 @OneToOne 没有 mappedBy
属性。此端的作用几乎与 @ManyToOne 完全相同。
此端映射到外键列。如果外键列与命名约定不匹配,我们可以指定 @JoinColumn
。
@Entity
public class Tire ...
// no mappedBy (like @OneToMany)
// ... so the "one" side of the relationship
// ... means it maps to the foreign key
// ... use @JoinColumn if needed
@OneToOne
@JoinColumn(name = "wheel")
Wheel wheel;