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;