sql-server - 将 SQL 查询转换为 hibernate 条件和投影

标签 sql-server hibernate subquery hql hibernate-criteria

我有来自 SQL 的查询:

select e.* 
from terminal_remote_deployment e
where id = (select top 1 e1.id
            from terminal_remote_deployment e1
            where e1.Terminal_info_id = e.Terminal_info_id
            order by e1.version desc
           );

我正在尝试像这样用 HQL 编写它:
final StringBuilder hql = new StringBuilder();
            hql.append(" from TerminalRemoteDeployment e");
            hql.append(" where e.id = (Select TOP 1 e1.id from TerminalRemoteDeployment e1 where e1.terminalInfo.id = e.terminalInfo.id order by e1.version desc)");

            Query query = getEntityManager().createQuery(hql.toString());
            resultList = (List<TerminalRemoteDeployment>) query.getResultList();

我在使用这种方法时遇到错误。请帮助我在 hibernate 中编写标准,因为我对此很陌生。

最佳答案

第二个 Append 的内部子查询中的 Where 子句。
应该是 terminal_Info_id 而不是 终端信息.id .

final StringBuilder hql = new StringBuilder();
        hql.append(" from TerminalRemoteDeployment e");
        hql.append(" where e.id = (Select TOP 1 id from TerminalRemoteDeployment e1 where e1.terminal_Info_id = e.terminal_Info_id order by e1.version desc)");

        Query query = getEntityManager().createQuery(hql.toString());
        resultList = (List<TerminalRemoteDeployment>) query.getResultList();

关于sql-server - 将 SQL 查询转换为 hibernate 条件和投影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50448072/

相关文章:

sql-server - 获取链接服务器状态的存储过程

sql - 在我的例子中,如何使用 SQL Server 将列记录放入行中?

sql-server - 现在和下一个电视节目信息SQL查询

sql-server - 如何检查 SQL Server 中是否存在列?

hibernate - 部署因Wildfly Gradle和Hibernate而失败

mysql - 无法从左连接中选择正确的信息

java - com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException : Table doesn't exist

java - 分离实体和延迟加载字段 - 工作线程

mysql - 子查询不在选择中聚合

MySQL行子查询比较问题