您的位置:首页 > 其它

hibernate多表联合查询

2016-06-30 07:22 176 查看
//三表联合查询

/*

* 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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hibernate