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

标签 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));

最佳答案

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

尝试这个查询:

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/

相关文章:

java - Hibernate保存和SQL插入有什么区别?

java - 以异步方式实现 Envers 审计的可能性

java - 如何检测方法发布中同一时间的重复请求

mysql - Django - sqlclear 无法删除具有 AbstractUser 外键约束的数据库

java - hibernate 查询使用列表属性检查单个值

hibernate - 服务器重新启动后,将继续创建已删除的字段

java - 数学错误开关总是以零结束

java - Spring MVC Controller 预处理请求体

php - MySQLi fetch_all 连续调用出错

php - 如何设置列自动获取而不直接在php中的excel表格代码中给出