一:多对一(双向关联)
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配置:
@Entity public class Car implements Serializable{ @Id @GeneratedValue public int getId() { return id; } @ManyToOne @JoinColumn(name="uid") public User getUser() { return user; } } @Entity public class User implements Serializable { @Id @GeneratedValue public int getId() { return id; } //mappedBy的作用就是用来指定由谁来维护关系 @OneToMany(mappedBy="user",cascade=CascadeType.ALL) public Set<Car> getCars() { return cars; } }