读书人

hql的有关问题帮忙解决下

发布时间: 2012-03-30 17:32:10 作者: rapoo

hql的问题,帮忙解决下
有三个类(表)
User , Customer , CustomerCategory
其中User 和Customer 是一对多的关系,一个User 可以有很多Customer。 Customer 和 CustomerCategory 是多对多关系。
现在问题是这样的,前边传过来一个User 列表和一个 CustomerCategory 列表,获取符合条件的Customer 列表。
这个hql应该怎么写。

以下是我写的两个hql:

select distinct(c) from Customer c join c.customerCategorys cc join c.user u where (cc.id = ? and u.id= ? ... 循环产生后部分

另一个
select distinct(c) from Customer c where c.id in ( select c1.id from Customer c1 join c1.customerCategorys cc where cc.id in (:ccIds) and c.user.id in (:uIds) ;

这两个都很慢大概20秒左右,生成的sql大约100kb左右的样子。有什么办法能让查询快一些,可以不用hibernate 或者用存储过程等,数据库oracle11g。
高手指点 谢谢。

[解决办法]
Customer 和 CustomerCategory 为什么要用多对多的关系?最好采用中间表的形式。

读书人网 >J2EE开发

热点推荐