hibernate问题,一对多查询

生活在他方 2012-10-23 04:20:42
两个表,企业类型表和企业表。设置了一对多。

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

企业类型表的hibernate配置
<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代码:

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文件里面设置还是需要在程序里写啊。


...全文
134 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
生活在他方 2012-10-23
  • 打赏
  • 举报
回复
才开始学,然后要改别人的程序,有些地方没弄明白呢,楼上说的待我试试。
生活在他方 2012-10-23
  • 打赏
  • 举报
回复

String hql = "from Company company where company.type.id=1 order by company.id desc";
List<Company> list = companyDao.find(hql);


貌似hql应该是这样的
吉他猪 2012-10-23
  • 打赏
  • 举报
回复
上面的session方法写错了。。
吉他猪 2012-10-23
  • 打赏
  • 举报
回复
楼主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集合查询上来
coolbamboo2008 2012-10-23
  • 打赏
  • 举报
回复
你那个hql语句写的不对吧

81,095

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧