hualicc 2011-10-11
1. Hibernate Annotation关系映射有下面几种类型: 1)一对一外键关联映射(单向) 2)一对一外键关联映射(双向) 3)一对一主键关联映射(不重要)在这不演示 在实际中很少用,使用注解@PrimaryKeyJoinColumn 意思是说,我的主键去参考另外一张表中的主键,作为我的主键,但是在我测试使用 注解一对一主键关联映射,在生成表的时候,数据库中并没有生成关联,使用XML 映射可以生成。Annotation注解一对一主键关联映,有些bug。不过没空去研究它。 因为在实际开发中一对一很少用。在实际开发中我机会没有用过,主键关联就更少了 4)多对一关联映射 5)一对多关联映射(单向) 6)一对多关联映射(双向) 7)多对多关联映射(单向) 8)多对多关联映射(双向) 2.介绍各种映射用法 1)一对一外键关联映射(单向) @OneToOne(cascade=CascadeType.ALL) @JoinColumn(name="userid",unique=true) //一对一外键关联,使用@OneToOne,并设置了级联操作 //@JoinColum设置了外键的名称为userid(数据库字段名),如果不设置,则默认为另一类的属性名+ _id //外键的值是唯一的(unique),不可重复,与另一类的主键一直 2)一对一外键关联映射(双向) Class1里与上面一样, Class2: @OneToOne(mappedBy="class2",cascade=CascadeType.ALL) //一对一双向关联关系,使用@OneToOne //注意:需要加上mappedBy="class2",如果不加上的话, //Class2也会生成一个外键(class1_id) //mappedby="class2"需要指向与他关联对象的一个属性 //说明双向关联关系中,有且仅有一端是作为主体(owner)端存在的 //主体端负责维护联接列 //对于不需要维护这种关系的从表则通过mappedBy属性进行声明 //mappedBy的值指向主体的关联属性 //规律:只有是双向关联关系,都加上mappedby //cascade=CascadeType.ALL级联 4)多对一关联映射 在多的一端配置: @ManyToOne(targetEntity=Organization.class) @JoinColumn(name="orgid") //多对一注解@ManyToOne //targetEntity指定了关联对象 //@JoinColumn(name="orgid")指定生产的外键的字段名,默认是org_id 5)一对多关联映射(单向) @OneToMany @JoinColumn(name="orgid") 6)一对多关联映射(双向) 一端: @OneToMany(mappedBy="org") @JoinColumn(name="orgid") 多端: @ManyToOne @JoinColumn(name="orgid") 7)多对多关联映射(单向) @ManyToMany @JoinTable(name="t_u_r", joinColumns={@JoinColumn(name="u_id")}, inverseJoinColumns={@JoinColumn(name="r_id")} ) 8)多对多关联映射(双向) User端 @ManyToMany @JoinTable(name="t_u_r", joinColumns={@JoinColumn(name="u_id")}, inverseJoinColumns={@JoinColumn(name="r_id")} ) Role端 @ManyToMany(mappedBy="role")