读书人

hibernate有关问题一对多查询

发布时间: 2012-11-07 09:56:10 作者: rapoo

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集合查询上来

读书人网 >Java Web开发

热点推荐