如何在hibernate中使用条件创建内部查询?

时间:2016-05-31 06:54:33

标签: java mysql hibernate

我有一个类似的查询:

SELECT * 
FROM mars_india.leave_x_user 
WHERE user_id in (SELECT user_id FROM mars_india.user where vendor_id=16);

我从stackoverflow获得了以下解决方案但无法理解它:

criteria =criteria.createCriteria(user.USER_DOMAINS)
    .add(Restrictions.eq(UserDomain.DOMAIN, domain));

1 个答案:

答案 0 :(得分:0)

唉... 首先,您需要了解您不必使用子查询来获取相同的信息。

尝试此查询:

SELECT lxu.* FROM mars_india.leave_x_user lxu 
LEFT JOIN mars_india.user miu 
ON lxu.user_id = miu.user_id
WHERE miu.vendor_id=16

它应该产生与查询相同的结果。

JOIN声明是神奇的。 简单来说:它让两个表表现为一个表。 因此,现在您可以使用vendor_id查询此连接表,并仅返回连接表的一部分,这些结果与您的“leave_x_user”表相似。

请参阅,您只需要一个带有一个限制的查询即可获得相同的数据。

这就是您通过使用此条件查询基本上所做的事情。

要了解条件查询的语法,请查看此处: https://docs.jboss.org/hibernate/orm/3.3/reference/en/html/querycriteria.html

如果您需要更具体的信息,请发布您的域模型(映射到表的类)。

快乐的编码! :d