2010-08-18 46 views
0

我有一个用户表,它包含两种不同类型的用户(A和B)。 A型用户可以与B型用户建立关系(记录在关系表中)。类型A用户可以与类型B用户关系的数量记录在另一个表中的字段中。使用Hibernate根据另一个表中的记录数来提取记录

我想让Hibernate返回所有没有建立完全关系的A型用户。我有一个SQL查询,将做到这一点。我需要做什么?

编辑

我已经设法通过投掷我查询到执行Session.createSQLQuery()得到这个工作,但它似乎不可思议有SQL块在这一切之中非常棒的休眠代码。我认为,如果可能的话,应该在HSQL或Hibernate对象中使用它。

这是我试图转换为HSQL伪查询:

select userId 
from (
    select user_id, max_mentees, count(connection_id) num_mentees 
    from user_table 
    join mentor on mentor_id = user_id and user_status = 'ACTIVE' 
    left join connections on connection_mentor_id = mentor_id 
    and connection_status = 'ACTIVE' and connection_end > sysdate 
    group by user_id, max_mentees, connection_id 
) 
where (max_mentees > num_mentees) 
group by user_id 
+0

'我想让Hibernate返回所有未建立完全关系的A型用户何时?什么时候做? – 2010-08-18 22:23:12

+0

基本上,A用户将成为B用户的导师,A用户每次可以拥有多少“受指导者”。计数是查看有多少B(受指导者)用户分配给A(指导者)用户,以便我们可以将其与另一个表中的限制数进行比较。 – 2010-08-19 12:43:28

回答

0

假设你有,有一个人跟一个MentorRelationship类多关系的导师类,你会做这样的事情:

session.createQuery("from Mentor mentor where mentor.menteeRelationships.size < mentor.menteeRelationships.maxNumberOfRelationships") 
0

我想有休眠返回所有做A类用户没有建立所有的关系。我有一个SQL查询,将做到这一点。我需要做什么?

说实话,你的问题还是很清楚(至少我),没有看到SQL,没有看到你的对象模型和映射,似乎很难做到准确,我的建议是要么:

如果您希望更详细的解答,您应该IMO提供更多的细节。

+0

我用我试图重现的查询更新了我的问题。 – 2010-08-26 11:58:11

相关问题