Hibernate inner join left join

  1. Hibernate inner join left join
  2. CREATE TABLE `catg` (
  3.   `id` int(11) NOT NULL auto_increment,
  4.   `cname` varchar(50default NULL,
  5.   PRIMARY KEY  (`id`)
  6. ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  7. CREATE TABLE `cgoods` (
  8.   `id` int(11) NOT NULL auto_increment,
  9.   `gname` varchar(11default NULL,
  10.   `gdes` varchar(50default NULL,
  11.   `cid` int(11default NULL,
  12.   PRIMARY KEY  (`id`),
  13.   KEY `FK_cid` (`cid`),
  14.   CONSTRAINT `FK_cid` FOREIGN KEY (`cid`) REFERENCES `catg` (`id`)
  15. ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  16. Catg.xml:
  17. <hibernate-mapping package="com.vo">
  18.     <class name="Catg" table="catg">
  19.       <id name="id" column="id" type="int">
  20.       <generator class="native"></generator>
  21.       </id>
  22.       <property name="cname" column="cname" type="string">
  23.       </property>
  24.       <set name="goods" cascade="all" inverse="true">
  25.          <key column="cid" not-null="true"></key>
  26.           <one-to-many class="com.vo.Cgoods" />
  27.       </set>
  28.       <property name="count">
  29.         <formula>
  30.                 (select count(p.id) from Cgoods p where p.cid=id group by 
  31. p.cid)
  32.             </formula>
  33.         </property>
  34.     </class>
  35.     <query name="CatgQuery">from Catg c</query>
  36. </hibernate-mapping>
  37. Cgoods.xml:
  38. <hibernate-mapping package="com.vo">
  39.    <class name="Cgoods" table="cgoods">
  40.       <id name="id" column="id"  type="int">
  41.         <generator class="native"></generator>
  42.       </id>
  43.       <property name="gname" column="gname" type="string"/>
  44.       <property name="gdes" column="gdes" type="string"/>
  45.       <many-to-one name="catg" column="cid" class="Catg" fetch="select">
  46.       </many-to-one>
  47.       
  48.    </class>
  49. </hibernate-mapping>
  50. Test.java:
  51. HibernateUtil.initSessionFactory(new File(Test2.class.getClassLoader().getResource
  52. ("hibernate.cfg.xml").getFile()));
  53.         Session se = HibernateUtil.getSession();
  54.         //HibernateUtil.transaction();
  55.         //内联
  56.         //String hsql="select ca.cname,g.gname from Catg ca,Cgoods g where ca.id=g.catg";
  57.         //左外联  with是选取join中的条件
  58.         //String hsql="select ca.cname,g.gname from Catg ca left join  ca.goods g 
  59. with g.id>1";
  60.         //String hsql="select g.gname,g.gdes from Cgoods g";
  61.         //String hsql="select g from Catg ca inner join  ca.goods g";
  62.         //String hsql="from Catg ca inner join fetch ca.goods g";
  63.         Query query2=se.createQuery(hsql);
  64.         List list= query2.list();
  65.         Iterator iter= list.iterator();
  66.         while(iter.hasNext()){
  67.         Object[] temp=(Object[])iter.next();
  68.         String cname=(String)temp[0];
  69.         String cnt=(String)temp[1];
  70.         System.out.println(cname + ":" + cnt+"");
  71.         }
  72.         HibernateUtil.closeSession();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值