hibernate一对多
一、xml配置
一对多,在“一”中是用set集合来表示多
持久化类Book
public class Book implements Serializable {
private Long book_id;
private String isbn;
private String book_name;
private Date publishDate;
private Long price;
private Set<Chapter> chapters;
持久化类Chapter
public class Chapter implements Serializable {
private Long id;
private String title;
private int onOfPages;
private Book book;
Book.hbm.xml配置文件
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="Hibernate_one_to_many.Book">
<id name="book_id">
<generator class="increment"></generator>
</id>
<property name="book_name"></property>
<property name="isbn"></property>
<property name="publishDate"></property>
<property name="price"></property>
<set name="chapters" cascade="all" lazy="false">
<!--对应book的主键-->
<key column="book_id"></key>
<one-to-many class="Hibernate_one_to_many.Chapter"></one-
to-many>
</set>
</class>
<query name="book.by.isbn">
<![CDATA[from Hibernate_one_to_many.Book where isbn=?]]>
</query>
</hibernate-mapping>
Chapter.hbm.xml配置文件
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="Hibernate_one_to_many.Chapter">
<id name="id">
<generator class="increment"></generator>
</id>
<property name="title" column="chapter_title"></property>
<property name="onOfPages"></property>
<many-to-one name="book" class="Hibernate_one_to_many.Book"
column="book_id" cascade="all" lazy="false">
</many-to-one>
</class>
</hibernate-mapping>
二、注解方式
持久化类Chapter
@Entity
public class Chapter implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "chapter_id")
private Long id;
private String title;
private int onOfPages;
持久化类Book
@Entity
public class Book implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long book_id;
private String isbn;
private String book_name;
private Date publishDate;
private Long price;
@OneToMany(targetEntity = Chapter.class)
@JoinColumn(name = "book_id")
@Cascade(CascadeType.ALL)
// @LazyCollection(LazyCollectionOption.FALSE)
private Set<Chapter> chapters;