我有一个类似的查询:
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));
答案 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