public class Book{
// 其他内容…
@OneToOne(optional=true,cascade=CascadeType.ALL)
public BookExtend bookExtend;
}
JoinColumn
JoinColumn注释用于定义主类在数据库中对应的表通过什么字段和关系类的主键进行关联,这个注释是可选的,如果不提供该注释,Kodo在使用”对象名_ID”和关联表进行关联(简单情况下),比如演示场景中类Book的bookExtend没有使用JoinColumn注释进行声明,我们使用Kodo EJB提供的Mapping Tool工具生成表格的时候,Book类对应的表Book中将自动加入列bookExtend_ID,它的类型将和BookExtend对应表的主键字段id类型保持一致。
JoinColumn注释中有两个属性:name和referencedColumnName属性。
- name
String类型。
它用于指定主类对应的表中和关系类的主键进行关联的字段的名称,比如上例中,我们不希望使用默认的bookExtend_ID字段名进行关联,我们可以在Book类中使用JoinColumn注释bookExtend属性,设置JoinColumn注释为自己想要的名字比如extendID或者其他。
- referencedColumnName
String类型。
指定关联表中与主表形成关联关系的字段名。主要用于设置区别于主键字段的情况。比如BookExtend表中默认使用Id进行关联,但现在需要使用其他字段进行关联,我们就可以提供该属性。
JoinColumn用法举例 public class Book{
// 其他内容…
@OneToOne(optional=true,cascade=CascadeType.ALL)
@JoinColumn(name="extendID",referencedColumnName="ID")
public BookExtend bookExtend;
}