Hibernate常用注释收集5
一般通过连接表来实现这种关联,可以通过@JoinColumn注解来描述这种单向关联关系。
上例 Customer 通过 CUST_ID 列和 Ticket 建立了单向关联关系。
通过关联表来处理单向关联
@Entity
public class Trainer {
@OneToMany
@JoinTable(
name=”TrainedMonkeys”,
joinColumns = @JoinColumn( name=”trainer_id”),
inverseJoinColumns = @JoinColumn( name=”monkey_id”)
)
public Set
…
}
@Entity
public class Monkey {
… //no bidir
}
通过关联表来处理单向一对多关系是首选,这种关联通过 @JoinTable 注解来进行描述。上
例子中 Trainer 通过TrainedMonkeys表和Monkey建立了单向关联关系。其中外键trainer_id
关联到Trainer(joinColumns)而外键monkey_id关联到Monkey(inverseJoinColumns).
默认处理机制
通过连接表来建立单向一对多关联不需要描述任何物理映射,表名由一下3个部分组成,主
表(owner table)表名 + 下划线 + 从表(the other side table)表名。指向主表的外键名:主表表名
+下划线+主表主键列名 指向从表的外键定义为唯一约束,用来表示一对多的关联关系。
@Entity
public class Trainer {
@OneToMany
public Set
…
}
@Entity
public class Tiger {
… //no bidir
}
上述例子中 Trainer 和 Tiger 通过 Trainer_Tiger 连接表建立单向关联关系。其中外键
trainer_id 关联到 Trainer表,而外键 trainedTigers_id 关联到 Tiger 表。
多对多
通过 @ManyToMany 注解定义多对多关系,同时通过 @JoinTable 注解描述关联表和关联
条件。其中一端定义为 owner, 另一段定义为 inverse(对关联表进行更新操作,这段被忽略)。
@Entity
public class Employer implements Serializable {
@ManyToMany(
targetEntity=org.hibernate.test.metadata.manytomany.Employee.class,
cascade={CascadeType.PERSIST, CascadeType.MERGE}
)
@JoinTable(
name=”EMPLOYER_EMPLOYEE”,
joinColumns=@JoinColumn(name=”EMPER_ID”),
inverseJoinColumns=@JoinColumn(name=”EMPEE_ID”)
)
public Collection getEmployees() {
return employees;
}
…
}
@Entity
public class Employee implements Serializable {
@ManyToMany(
cascade = {CascadeType.PERSIST, CascadeType.MERGE},
mappedBy = “employees”,
targetEntity = Employer.class
)
public Collection getEmployers() {
return employers;
}
}
默认值:
关联表名:主表表名 + 下划线 + 从表表名;关联表到主表的外键:主表表名 + 下划线 +
主表中主键列名;关联表到从表的外键名:主表中用于关联的属性名 + 下划线 + 从表的
主键列名。
声明: 除非转自他站(如有侵权,请联系处理)外,本文采用 BY-NC-SA 协议进行授权 | 嗅谱网
转载请注明:转自《Hibernate常用注释收集5》
本文地址:http://www.xiupu.net/archives-276.html
关注公众号:
微信赞赏
支付宝赞赏