gpt4 book ai didi

Hibernate:如何进行 EXISTS 查询? (不是子查询)

转载 作者:行者123 更新时间:2023-12-04 02:39:11 25 4
gpt4 key购买 nike

例如:

EXISTS ( SELECT * FROM [table] WHERE ... )

如何使用 Hibernate 进行此类查询?

最佳答案

HQL 不允许使用 exists陈述。
UPD 从 Hibernate 5 开始 it supports it as a predicate in WHERE

您可以使用多种方法:

  • 对于 Hibrnate 5:您可以对同一个表使用子查询 boolean exists = session.createQuery("select 1 from PersistentEntity where exists (select 1 from PersistentEntity p where ...)").uniqueResult() != null; .感谢下面的作者。
  • count(*) > 0但这对性能不利 Avoid Using COUNT() in SQL When You Could Use EXISTS()
  • 使用 boolean exists = session.createQuery("from PersistentEntity where ...").setMaxResults(1).uniqueResult() != null;但这将强制 Hibernate 加载所有字段并使对象水合,即使您只需要检查空值。
  • 使用 session.get(PersistentEntity.class, id) != null如果您启用二级缓存,这将更快地工作,但如果您需要更多的标准而不仅仅是 id,这将是一个问题。 .
  • 您可以使用以下方法:getSession().createQuery("select 1 from PersistentEntity where ...").uniqueResult() != null)
  • 关于Hibernate:如何进行 EXISTS 查询? (不是子查询),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5655725/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com