hibernate学习笔记【对象继承采用一个表方式】

来源:互联网 发布:slackware linux 安装 编辑:程序博客网 时间:2024/05/06 22:02

例子:商品(dvd,book)

Item.java

package com.gh.hibernate.test;import java.io.Serializable;public class Item implements Serializable {/** * 测试继承 */private static final long serialVersionUID = 1586577862062600368L;private Integer id;private String name;private String manufacturer;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getManufacturer() {return manufacturer;}public void setManufacturer(String manufacturer) {this.manufacturer = manufacturer;}}


dvd.java

package com.gh.hibernate.test;public class dvd extends Item {private String regionCode;public String getRegionCode() {return regionCode;}public void setRegionCode(String regionCode) {this.regionCode = regionCode;}}


book.java
package com.gh.hibernate.test;public class book extends Item {private String pageCount;public String getPageCount() {return pageCount;}public void setPageCount(String pageCount) {this.pageCount = pageCount;}}

Item.hbm.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping><class name="com.gh.hibernate.test.Item"><idname="id"><generator class="native"></generator></id><discriminatorcolumn="category"type="string"/><property name="name"/><property name="manufacturer"/><subclassname="com.gh.hibernate.test.book"discriminator-value="1"><property name="pageCount"></property></subclass><subclassname="com.gh.hibernate.test.dvd"discriminator-value="2"><property name="regionCode"></property></subclass></class></hibernate-mapping>

测试:

public void testDemo1(){Configuration config = new Configuration().configure();SessionFactory sessionFactory = config.buildSessionFactory();Session session = sessionFactory.openSession();List<Item> l1 = session.createQuery("from dvd").list();for(Item it : l1){System.out.println(it.getName());}book bk = new book();bk.setName("aaa");dvd dvd = new dvd();dvd.setName("dvd2");Transaction ts = session.beginTransaction();session.save(bk);session.save(dvd);session.flush();ts.commit();}



0 0