- Hibernate inner join left join
- CREATE TABLE `catg` (
- `id` int(11) NOT NULL auto_increment,
- `cname` varchar(50) default NULL,
- PRIMARY KEY (`id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
- CREATE TABLE `cgoods` (
- `id` int(11) NOT NULL auto_increment,
- `gname` varchar(11) default NULL,
- `gdes` varchar(50) default NULL,
- `cid` int(11) default NULL,
- PRIMARY KEY (`id`),
- KEY `FK_cid` (`cid`),
- CONSTRAINT `FK_cid` FOREIGN KEY (`cid`) REFERENCES `catg` (`id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
- Catg.xml:
- <hibernate-mapping package="com.vo">
- <class name="Catg" table="catg">
- <id name="id" column="id" type="int">
- <generator class="native"></generator>
- </id>
- <property name="cname" column="cname" type="string">
- </property>
- <set name="goods" cascade="all" inverse="true">
- <key column="cid" not-null="true"></key>
- <one-to-many class="com.vo.Cgoods" />
- </set>
- <property name="count">
- <formula>
- (select count(p.id) from Cgoods p where p.cid=id group by
- p.cid)
- </formula>
- </property>
- </class>
- <query name="CatgQuery">from Catg c</query>
- </hibernate-mapping>
- Cgoods.xml:
- <hibernate-mapping package="com.vo">
- <class name="Cgoods" table="cgoods">
- <id name="id" column="id" type="int">
- <generator class="native"></generator>
- </id>
- <property name="gname" column="gname" type="string"/>
- <property name="gdes" column="gdes" type="string"/>
- <many-to-one name="catg" column="cid" class="Catg" fetch="select">
- </many-to-one>
- </class>
- </hibernate-mapping>
- Test.java:
- HibernateUtil.initSessionFactory(new File(Test2.class.getClassLoader().getResource
- ("hibernate.cfg.xml").getFile()));
- Session se = HibernateUtil.getSession();
- //HibernateUtil.transaction();
- //内联
- //String hsql="select ca.cname,g.gname from Catg ca,Cgoods g where ca.id=g.catg";
- //左外联 with是选取join中的条件
- //String hsql="select ca.cname,g.gname from Catg ca left join ca.goods g
- with g.id>1";
- //String hsql="select g.gname,g.gdes from Cgoods g";
- //String hsql="select g from Catg ca inner join ca.goods g";
- //String hsql="from Catg ca inner join fetch ca.goods g";
- Query query2=se.createQuery(hsql);
- List list= query2.list();
- Iterator iter= list.iterator();
- while(iter.hasNext()){
- Object[] temp=(Object[])iter.next();
- String cname=(String)temp[0];
- String cnt=(String)temp[1];
- System.out.println(cname + ":" + cnt+"");
- }
- HibernateUtil.closeSession();
Hibernate inner join left join
最新推荐文章于 2019-02-17 10:51:39 发布