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;