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

hibernate有关问题,一对多查询

热度:9008   发布时间:2013-02-25 21:09:18.0
hibernate问题,一对多查询
两个表,企业类型表和企业表。设置了一对多。

企业表的hibernate配置
XML code
<many-to-one name="type" column="fk_type_id" class="com.model.CompanyType" />

企业类型表的hibernate配置
XML code
<set name="companys" table="t_company" lazy="false" cascade="delete" inverse="true" order-by="pk_id">            <key column="fk_type_id"/>            <one-to-many class="com.model.Company"/>        </set>


java代码:
Java code
String hql = "select company from Company company.state=1 ";List<Company> list = companyDao.find(hql);


在后台列出企业列表的时候,控制台显示的sql是
select ....from t_company ...
select ....from t_companytype where companytype.pk_id=?
select ....from t_companytype where companytype.pk_id=?
select ....from t_companytype where companytype.pk_id=?
select ....from t_companytype where companytype.pk_id=?
......
显示多少条记录就会查询查询多少次企业类型表。

想问下大大们,有什么设置可以不用那么多sql语句就搞定啊?
是需要在配置的xml文件里面设置还是需要在程序里写啊。




------解决方案--------------------------------------------------------
楼主hql的问题
你用State state = session.get("select State from State s where s.id=1");
然后List<Company> list = state.getCompanies();
这样它就只会发出2条
一条是查询对应的state上来,第二条它会是用company.id in(,...)将company集合查询上来
  相关解决方案