当前位置: 代码迷 >> Java Web开发 >> 请问hql一对多表查询有关问题
  详细解决方案

请问hql一对多表查询有关问题

热度:90   发布时间:2016-04-16 21:24:58.0
请教hql一对多表查询问题
本帖最后由 abcxiaoye 于 2015-01-25 22:33:10 编辑
建了三个表tb_directory(id,name),tb_category(id,directoryId,..),tb_info(id,categoryId,...)并建立一对多关系。

<hibernate-mapping package="com.lyq.persistence">
<class name="Directory" table="tb_directory">
<!-- 主键 -->
<id name="id">
<generator class="native"/>
</id>
<property name="name"  length="50"/>
<!-- 一对多关系 -->
<set name="directs" inverse="true" cascade="all" order-by="directoryId">
<key column="directoryId"/>
<one-to-many class="Category"/>
</set>
</class>
</hibernate-mapping>

建立Directory实体的set/get
private int id; //id号
private Set directs; //与主类别级联



<hibernate-mapping package="com.lyq.persistence">
<class name="Category" table="tb_category">
<!-- 主键 -->
<id name="id">
<generator class="native"/>
</id>
<property name="name" not-null="true" length="100"/>

<!-- 与主类别的多对一关系 -->
<many-to-one name="directs" column="directoryId" cascade="save-update"/>

<!-- 与详细信息的一对多关系 -->
<set name="meds" inverse="true" cascade="all" order-by="categoryId">
<key column="categoryId"/>
<one-to-many class="Info"/>
</set> 

</class>
</hibernate-mapping>

建立Category实体的set/get
       private int id; //id号
private Set meds; //与详细信息关联
private Directory directs;//与主类别级联

<class name="Info" table="tb_info">
<!-- 主键 -->
<id name="id">
<generator class="native"/>
</id>
<property name="title" not-null="true" />
<!-- 与类别的多对一关系 -->
<many-to-one name="cates" column="categoryId" cascade="save-update" lazy="proxy"/>
</class>
</hibernate-mapping>

建立Info实体的set/get
private int id; //id号
private Category cates; //与子类别级联

现在我想查询通过tb_directory表中的id=9这个条件,查询tb_info表相关信息,接下来怎么写代码?谢谢!!

------解决思路----------------------
List infolist=dao.findByHQL("from Info where id=9")  不是这样?
------解决思路----------------------
select from Info i,Directory d,Category c where i.categoryId=c.id and c.directoryId=d.id
好像是这样
  相关解决方案