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>
还没有评论,来说两句吧...