hibernate 外键注解定义组合主键的方法: 有三种 1: 将组件类朱杰伟***@Embeddable, 并将组件的属性注解为***@Id 2: 将组件的属性注解为***@EmbeddedId 3: 将类注解为***@IdClass, 并将该实体类中的所有属于主键的属性都注解为***@Id 下面介绍***@IdClass 的用法其中***@Id 都是定义在 get 方法之上,***@IdClass( ) 在本类中使用***@Id 定义需要建立联合主键的类, 在主键类中只要定义对应的属性, 以及 get 和 set 方法, 并且使用相同的名字进行定义这个是符合 Ejb3 标准也可以使用 Hibernate 专门的方式. 定义原类级别的***@Entity ***@AssociationOverride(name="",joinColumns=***@JoinCol umn(name="chan_id")) ***@EmbededId public TvMa id…. 这个为主键类对象主键类中***@Embeddable ***@ManyToOne public Chanel chanel public String name; ***@ManyToOne public Presesenter presenter; 映射实体 Bean 的关联关系一对一: 就是主外键表中都只能存在唯一分为三种情况. 1: 共享一个主键 2: 通过外键关联到另一个实体的主键.( 必须在外键列增加唯一约束) 3: 通过关联表来保存两个实体之间的链接关系( 必须在外键列增加唯一约束) 一对一共享主键: 使用***@PrimaryKeyJoinColum n 定义一对一关联, 保证两个实体类的主键 id 相同, 然后在一个类中定义另外个类的 get 方法, 并且设置***@OneToOne() 二: 使用外键列进行实体的关联在主键类表中定义外键表的实体类 get 方法然后设置***@OneToOne(cascade=) ***@JoinColumn(name="password_fk") "" 中为主键列中外键列名…外键表实体类的 get 方法外键表实体类中***@OneToOne(mappedBy="passport")"" 中为主键表实体类中的属性名( 主体的关联属性) public …主键表实体类 get 方法其中***@JoinColumn 是可选的多对一(Many-to-one) 使用***@ManyToOne 注解定义多对一***@ManyToOne(cascade=(,), ) ***@JoinColumn(name="COMP_ID") …对应 get 方法.. 其中***@JoinColumn 也是可选的 targetentity 属性用于在接口作为返回值的时候, 一般不需要设置多对多的没有专门描述, 应该放在了两个的关联表中进行了描述集合类型的使用使用 OnetoMany 或者 ManyToOn e 进行对应的设置, 可以映射成对应的 List 集合, 也可以使用泛型进行约束***@Entity public class City{ ——–一方***@OneToMany(mappedBy="city") –外键实体类中的属性名***@OrderBy("streetName") —–外键实体类中的属性名 public List<Street> getStreets() …. } 在对应的 Street 类中——- 多方***@ManyToOne public City getCity() {….} 关键是主要放定义 List 保存多方引用, 使用 OneToMany 注解, 其中可以使用***@Order( 外键表属性) 外表部分就是使用***@ManyToOne 放置在主表实体类的 get 方法之上一对多关系就是多对一. 因为是双向关联的建立双向的关键, 在多对一一方几乎总是双向关联中主体端, 而一对多这端的关联注解为***@OneToMany(mappedBy= …)…为外键表中的主表对象的属性名, 这样外键表不必也不能再定义物理映射了 Hibernate -- 注解( Annotation )关系映射 1. Hibernate Annotation 关系映射有下面几种类型: 1) 一对一外键关联映射(单向) 2) 一对一外键关联映射(双向) 3) 一对一主键关联映射(不重要)在这不演示在实际中很少用,使用注解***@PrimaryKeyJoinColumn 意思是说,我的主键去参考另外一张表中的主键,作为我的主键,但是在我测试使用注解一对一主键关联映射, 在生成表的时候, 数据库中并没有生成关联,使用 XML 映射可以生成
hibernate外键注解 来自淘豆网m.daumloan.com转载请标明出处.