Hibernate_映射继承关系

来源:互联网 发布:淘宝店铺怎么投诉 编辑:程序博客网 时间:2024/06/01 11:45

继承关系常用的两种映射关系:

(1) one table 结合 join table : 


<hibernate-mapping package="cd.itcast.day4.extend"><!-- onetable 结合jointable, 取长补短 --><class name="Product" table="product" discriminator-value="1"><id name="id" column="id"><generator class="native"/></id><!-- 鉴别器 --><discriminator column="TYPES" type="integer"/><property name="name" column="name"/><property name="price" column="price"/><subclass name="BookProduct" discriminator-value="2"><property name="isbn" column="isbn"/></subclass><subclass name="WearProduct" discriminator-value="3"><join table="wear_product"><key column="product_id"/><property name="color" column="color"/></join></subclass></class></hibernate-mapping>
(2) per table :

<hibernate-mapping package="cd.itcast.day4.extend"><!-- per table --><class name="Product" table="product"><id name="id" column="id"><generator class="org.hibernate.id.enhanced.TableGenerator"><param name="segment_value">IdDomain</param><param name="initial_value">1</param><param name="increment_size">1</param></generator></id><property name="name" column="name"/><property name="price" column="price"/><union-subclass name="BookProduct" table="book_product"><property name="isbn" column="isbn"/></union-subclass><union-subclass name="WearProduct" table="wear_product"><property name="color" column="color"/></union-subclass></class></hibernate-mapping>

扩展, 使用HQL查询Product 的多个子类:

List l = session.createQuery("select p from Product p where type(p) in (BookProduct,WearProduct)").list();




原创粉丝点击