hibernate多对一映射
一、多对一,例如多本书对应一个出版社,关键配置在多
持久化类Publisher
public class Publisher implements Serializable {
private Long publisher_id;
private String code;
private String name;
private String address;
持久化类Book
public class Book implements Serializable {
private Long book_id;
private String isbn;
private String name;
//多对一,多本书对应一个出版社
private Publisher publisher;
private Date publishDate;
private Integer price;
Publisher.hbm.xml配置文件正常配置
<class name="many_to_one.Publisher">
<id name="publisher_id">
<generator class="native"></generator>
</id>
<property name="name"></property>
<property name="address"></property>
<property name="code"></property>
</class>
Book.hbm.xml配置文件
cascade级联操作,双方互相级联
lazy懒加载,false之后可以立即加载
<hibernate-mapping>
<class name="many_to_one.Book">
<id name="book_id">
<generator class="native"></generator>
</id>
<property name="name"></property>
<property name="isbn"></property>
<property name="price"></property>
<property name="publishDate"></property>
<many-to-one name="publisher" class="many_to_one.Publisher"
column="publisher_id" cascade="all" lazy="false">
</many-to-one>
</class>
</hibernate-mapping>
二、注解方式配置
Book持久化类
@Entity
@Table(name = "book2")
public class Book implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long book_id;
private String isbn;
private String name;
@ManyToOne
@JoinColumn(name = "publisher_id")
@Cascade(value = CascadeType.ALL)
@LazyToOne(value = LazyToOneOption.FALSE)
private Publisher publisher;
private Date publishDate;
private Integer price;
Publisher持久化类
@Entity
@Table(name = "publisher2")
public class Publisher implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long publisher_id;
private String code;
private String name;
private String address;