我有一个查询,例如:
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));
最佳答案
嗯... 首先,您需要了解不必使用子查询来获取相同的信息。
尝试这个查询:
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 语句很神奇。 简而言之:它让两个表表现为一张表。 因此,现在您可以使用您的供应商 ID 查询此联接表,并仅返回联接表中属于您的“leave_x_user”表的部分作为结果。
看吧,您只需要一个具有一项限制的查询即可获取相同的数据。
这就是您使用此条件查询基本上要做的事情。
要了解条件查询的语法,请查看此处: https://docs.jboss.org/hibernate/orm/3.3/reference/en/html/querycriteria.html
如果您需要更多具体信息,请发布您的域模型(映射到表的类)。
编码愉快! :D
关于java - 如何在 hibernate 中使用条件创建内部查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37538784/