两个表,企业类型表和企业表。设置了一对多。
企业表的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集合查询上来