hibernate多表联合查询

痛定思痛。 2022-09-22 11:59 342阅读 0赞

//三表联合查询
/*
* 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 {

  1. private Integer pid;
  2. private String pname;
  3. private Double market_price;
  4. private Double shop_price;
  5. private String image;
  6. private String pdesc;
  7. private Integer is_hot;
  8. private Date pdate;
  9. //二级分类因为是外键hibernate只能创建对象
  10. private CategorySecond categorySecond;
  11. set,get方法..................

}

public class CategorySecond {

  1. private Integer csid;
  2. private String csname;
  3. /*一级分类的外键*/
  4. private Category category;
  5. //配置商品的集合
  6. private Set<Product> products = new HashSet<>();
  7. set,get方法..................

}

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

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

  1. <id name="csid">
  2. <generator class="native"/>
  3. </id>
  4. <property name="csname"/>
  5. <many-to-one name="category" class="cn.itcast.shop.category.vo.Category" column="cid"/>
  6. <!-- 二级分类与商品的关联 -->
  7. <set name="products">
  8. <key column="csid"/>
  9. <one-to-many class="cn.itcast.shop.product.vo.Product"/>
  10. </set>
  11. </class>

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

  1. <class name="cn.itcast.shop.product.vo.Product" table="product">
  2. <id name="pid">
  3. <generator class="native" />
  4. </id>
  5. <property name="pname" />
  6. <property name="market_price" />
  7. <property name="shop_price" />
  8. <property name="image" />
  9. <property name="pdesc" />
  10. <property name="is_hot" />
  11. <property name="pdate" />
  12. <many-to-one name="categorySecond" class="cn.itcast.shop.categorySecond.vo.CategorySecond" column="csid"></many-to-one>
  13. </class>

发表评论

表情:
评论列表 (有 0 条评论,342人围观)

还没有评论,来说两句吧...

相关阅读

    相关 hibernate关联查询

    Hibernate关联查询有多种实现方式  方式一:建立视图 像查询表一样查询视图,给视图建立持久化类。 方式二:建立POJO之间的互相引用 在\.