hibernate多表联合查询

//三表联合查询
/*
* select t.* from product t,category c,categorysecond cs
WHERE t.csid = cs.csid
and c.cid = cs.cid
and c.cid = 1
*/
/*
* 如果是写HQL语句的写法
*
* select p from Category c ,CategorySecond cs ,Product p where c.cid = cs.category.cid
* and cs.csid = p.categorySecond.csid
* and c.cid = ?
*
*/

//hibernate自动外键关联,可以简化代码,提高效率
String hql = “select p from Product p join p.categorySecond cs join cs.category c where c.cid = ?”;

//这个是多表联合查询,因此不能使用离线查询
List\<\Product> list = this.getHibernateTemplate().execute(new PageHibernateCallback\<\Product>(hql, new Object[]{cid}, begin, limit));

——————————-java类

public class Product {

private Integer pid;

private String pname;

private Double market_price;

private Double shop_price;

private String image;

private String pdesc;

private Integer is_hot;

private Date pdate;

//二级分类因为是外键hibernate只能创建对象
private CategorySecond categorySecond;

set,get方法..................

}

public class CategorySecond {

private Integer csid;

private String csname;

/*一级分类的外键*/
private Category category;

//配置商品的集合
private Set<Product> products = new HashSet<>();


set,get方法..................

}

—————————————–hbm配置文件

!DOCTYPE hibernate-mapping PUBLIC
“-//Hibernate/Hibernate Mapping DTD 3.0//EN”
http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd“>


        <id name="csid">
            <generator class="native"/>
        </id>

        <property name="csname"/>

        <many-to-one name="category" class="cn.itcast.shop.category.vo.Category"  column="cid"/>

        <!-- 二级分类与商品的关联 -->
        <set name="products">
              <key column="csid"/>            
               <one-to-many class="cn.itcast.shop.product.vo.Product"/>
        </set>


    </class>

!DOCTYPE hibernate-mapping PUBLIC
“-//Hibernate/Hibernate Mapping DTD 3.0//EN”
http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd“>

<class name="cn.itcast.shop.product.vo.Product" table="product">
    <id name="pid">
        <generator class="native" />
    </id>
    <property name="pname" />
    <property name="market_price" />
    <property name="shop_price" />
    <property name="image" />
    <property name="pdesc" />
    <property name="is_hot" />
    <property name="pdate" />

    <many-to-one name="categorySecond" class="cn.itcast.shop.categorySecond.vo.CategorySecond" column="csid"></many-to-one>

</class>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值