本文共 1553 字,大约阅读时间需要 5 分钟。
继承映射、多态查询
通过hibernate如何实现继承,有三种方式:
1):每个子类一张表。每个子类对应一个hbm.xml文件,但是父类没有对应的hbm.xml文件。
Public class Parent implements Serilizable{ Private Long id;//主键 Private String name; ...setter/getter...}Public class Child1 implmemts Parent,Serilizable{ Private String cardNumber;}Public class Son implements Parent,Serilizable{ Private String loves;}
Child1.hbm.xml对于Som.hbm.xml一样的进行配置
多态查询Public void test(){ SessionFactory factory = new Configuration().configure(); Session session = factory.openSession(); Transaction tx = null; Try{ Tx = session.beginTransaction(); //注意这里并没有Parent.hbm.xml文件,因此在查询时,需要写全名,多态查询 Query query = session.createQuery(“from com.test.Parent”); Listlist = (List )query.list(); For(Parent p :list){ If(p instanceOf Child1){ //这里得到的就是Child1对象 }else if(p instanceOf Son){ //这里得到的就是Son对象 } } Tx.commit(); }catch(Exception e){ If(null != tx) tx.rollBack(); }finally{ If(null != session)session.close(); }}
2):所有的子类都在同一个表中(会造成字段浪费),只针对父类有hbm.xml,其余没有
Parent.hbm.xml
3):父类信息放置在一张表中,每个子类都有自己的表,但存放自己独有的东西。
...略....
转载地址:http://mhxei.baihongyu.com/