一:多对一(双向关联)
Bean:
public class Car implements Serializable{ ???private int id ; ???????private String name ; ???????private User user ; ???????????????....}public class User implements Serializable { ???????private int id ; ???????private String name ; ???????private Set<Car> cars ; ???????....}
xml配置:
Car.hbm.xml:<class name = "Car"> ???????<!-- id是来配置主键 ?????????????name是类中的哪个属性和主键映射 ????????????generator:表示主键的生成策略 ???????--> ???????<id name = "id"> ???????????<generator class="native" /> ???????</id> ???????<!-- property是用来把类中的属性和表的字段做一一对应 --> ???????<property name="name" /> ???????????????<!-- many-to-one 唯一的创建新的字段的标签 ????????????name是Car中一的一方的属性 ????????????column 表示name对应到表中的外键是什么名字 ???????--> ???????<many-to-one name="user" column="uid" /> ???????????</class>User.hbm.xml:<class name = "User"> ???????<!-- id是来配置主键 ?????????????name是类中的哪个属性和主键映射 ????????????generator:表示主键的生成策略 ???????--> ???????<id name = "id"> ???????????<generator class="native" /> ???????</id> ???????<!-- property是用来把类中的属性和表的字段做一一对应 --> ???????<property name="name" /> ???????<!-- class是集合中的对象 --> ???????<set name="cars" cascade="all"> ???????????<!-- key会在多的一方添加一个新的字段 --> ???????????<key column="uid"></key> ???????????<one-to-many class="Car"/> ???????</set> ???</class>
annotation配置:
@Entitypublic class Car implements Serializable{ ???????@Id @GeneratedValue ???public int getId() { ???????return id; ???} ???????@ManyToOne ???@JoinColumn(name="uid") ???public User getUser() { ???????return user; ???}} @Entitypublic class User implements Serializable { ???????@Id @GeneratedValue ???public int getId() { ???????return id; ???} ???????//mappedBy的作用就是用来指定由谁来维护关系 ????????@OneToMany(mappedBy="user",cascade=CascadeType.ALL) ???public Set<Car> getCars() { ???????return cars; ???}}
Hibernate映射关系配置
原文地址:http://www.cnblogs.com/hyl-home/p/7576814.html