1.单向关联
a.多对一(many-to-one)
@Entity(name = "COLOR") public class Color implements Serializable { private static final long serialVersionUID = 6402753847018667163L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column private String color; @ManyToOne(fetch = FetchType.EAGER) @JoinColumns({ @JoinColumn(name = "DOG_ID",nullable = false,referencedColumnName="id"), @JoinColumn(name = "DOG_NAME",nullable = false,referencedColumnName="DOG_NAME") }) private Dog dogs; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getColor() { return color; } public void setColor(String color) { this.color = color; } public Dog getDogs() { return dogs; } public void setDogs(Dog dogs) { this.dogs = dogs; } @Override public String toString() { return "Color [id=" + id + ", color=" + color + "]"; } }
@Entity(name = "DOG") @IdClass(DogPrimarykey.class) public class Dog { private static final long serialVersionUID = 7219216851705947642L; @Id private String id; @Id private String name; @Column(name = "DOG_AGE", length = 2) private int age; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { if (age > 100 || age < 1) { this.age = 1; } else { this.age = age; } } public void say() { // TODO Auto-generated method stub System.out.println("汪 汪 汪"); } @Override public String toString() { return "Dog [id=" + id + ", name=" + name + ", age=" + age + "]"; } }
因为一的那一段采用的联合主键,因此采用@JoinColumns的方式注解
@ManyToOne(fetch = FetchType.EAGER) 和 lazy 区别
如果是EAGER,那么表示取出这条数据时,它关联的数据也同时取出放入内存中。
如果是LAZY,那么取出这条数据时,它关联的数据并不取出来,在同一个session中,什么时候要用,就什么时候取(再次访问数据库)。
但是,在session外,就不能再取了。用EAGER时,因为在内存里,所以在session外也可以取。
CascadeType.PERSIST--级联保存,CascadeType.MERGE--级联更新,CascadeType.REFRESH--级联刷新,CascadeType.ALL--包含所有级联属性,所以可以多个。他们代表的操作是不一样的,如果你想包括所有级联关系就只需要用一个CascadeType.ALL就可以
b.一对一(One-to-one)
把上面的ManyToOne改为了OneToOne
2.双向关联(Bidirectional associations)
a.一对多(one to many)/多对一(many to one)
@Entity(name = "DOG") @IdClass(DogPrimarykey.class) public class Dog { private static final long serialVersionUID = 7219216851705947642L; @Id private String id; @Id private String name; @Column(name = "DOG_AGE", length = 2) private int age; @OneToMany(cascade=CascadeType.ALL,mappedBy="dogs") private Set<Color> colors; public Set<Color> getColors() { return colors; } public void setColors(Set<Color> colors) { this.colors = colors; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { if (age > 100 || age < 1) { this.age = 1; } else { this.age = age; } } public void say() { // TODO Auto-generated method stub System.out.println("汪 汪 汪"); } @Override public String toString() { return "Dog [id=" + id + ", name=" + name + ", age=" + age + "]"; } }
@Entity(name = "COLOR") public class Color implements Serializable { private static final long serialVersionUID = 6402753847018667163L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column private String color; @OneToOne @JoinColumns({ @JoinColumn(name = "DOG_ID",nullable = false,referencedColumnName="id"), @JoinColumn(name = "DOG_NAME",nullable = false,referencedColumnName="DOG_NAME") }) private Dog dogs; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getColor() { return color; } public void setColor(String color) { this.color = color; } public Dog getDogs() { return dogs; } public void setDogs(Dog dogs) { this.dogs = dogs; } @Override public String toString() { return "Color [id=" + id + ", color=" + color + "]"; } }
相关推荐
Hibernate关联关系映射 单向关联 │ ├─ 一对一外键单向关联 │ ├─ 一对一主键单向关联 │ ├─ 一对一连接表单向关联 │ ├─ 一对多外键单向关联 │ ├─ 一对多连接表单向关联 │ ├─ 多对一外键单向关联 │ ...
Hibernate 关联关系映射分类
Hibernate关联关系映射.CHM Hibernate文档相关
Hibernate关联关系映射实例速查,帮助初学者学习。
Hibernate4中映射关系图解。
hibernate中的关联关系映射ppt!觉得有用的可以下!
hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,包含4个说明文档,分别详细解说了hibernate关联映射的...
hibernate的关联关系映射,所有描述以选课系统这个案例来说明
Hibernate_关联关系映射配置详解,希望能帮助广大java爱好者
Hibernate_关联关系映射配置
该资源包含了一些常用的hibernate关联映射实例。包括一对多,多对多,继承映射,等,是学习hibernate的必备品
Hibernate实体关联关系映射--学习总结,让同仁们更好的学习Hiebernate
关于对Hibernate关联映射的一个总结,其中有各种映射的例子,详细用法 等
Hibernate 一对一外键单向关联 Hibernate 一对一主键单向关联 Hibernate 一对一连接表单向关联 Hibernate 一对多外键单向关联 Hibernate 一对多连接表单向关联 Hibernate 多对一外键单向关联 Hibernate 多对一连接...
Hibernate关联关系练习【全】
该属性与关联关系的维护权相关。 该属性应放在放弃维护权一方。 该属性值为对方的关联属性,表明以后的关联关系将由它来负责。 使用该属性的注解,无需也不能再设置cascade属性。 该属性只可能在双向...
Hibernate 实体关联关系映射 学习总结 把一对一 一对多 单向 双向 主键 外键 链接表等讲的比较清楚
文件中包含关于hibernate 各个属性的解释