项目里用到了Hibernate,我有个需求,要查一个实体,有两个条件,其中一个条件是与这个实体相关联的另外一个实体的某个值~
也就是说在数据库里是三张表,两个表通过一个中间表连接起来,但在Hibernate里配成了两个多对多映射关系的实体。
实体类: User.java Role.java
数据库表:t_user t_user_role t_role
平时我们一般的做法是先根据一个条件,查出一个实体的List(或Set),再遍历其中的另外一个实体List/Set,用另一个条件筛选~ 但今天想着这样做麻烦~ 况且写原生SQL都能一条语句搞定,凭什么Hibernate还得这么麻烦呢~ 问了N人~ 无解~ 最后在网上找到答案:
elements
就这么一个神奇的单词就搞定了~ 呵呵~
select distinc u from User u, u.roleList.elements r where r.inspector = '' and u.orgId = ''
给出找到答案的网址:
[url]http://www.cnblogs.com/lyj/archive/2008/10/27/1320764.html[/url]
也就是说在数据库里是三张表,两个表通过一个中间表连接起来,但在Hibernate里配成了两个多对多映射关系的实体。
实体类: User.java Role.java
数据库表:t_user t_user_role t_role
平时我们一般的做法是先根据一个条件,查出一个实体的List(或Set),再遍历其中的另外一个实体List/Set,用另一个条件筛选~ 但今天想着这样做麻烦~ 况且写原生SQL都能一条语句搞定,凭什么Hibernate还得这么麻烦呢~ 问了N人~ 无解~ 最后在网上找到答案:
elements
就这么一个神奇的单词就搞定了~ 呵呵~
select distinc u from User u, u.roleList.elements r where r.inspector = '' and u.orgId = ''
给出找到答案的网址:
[url]http://www.cnblogs.com/lyj/archive/2008/10/27/1320764.html[/url]