gpt4 book ai didi

java - Hibernate HQL Count 和 Implicit Join 结果不同

转载 作者:行者123 更新时间:2023-12-02 09:39:52 27 4
gpt4 key购买 nike

我有带有字段的 A 类

Long id
B activity

及相关B类

Long id
String name

然后我有 HQL 查询:

select a.id, a.activity.name from A a;

A 类上的某些 B 字段具有空值,因此左联接比内联接提供更多结果。

我会自动生成 HQL,因此我需要选择,然后是计数:

select count(*) from A;

这给了我不同的结果。

除了在 SQL 上添加显式左连接之外,还有其他方法可以解决此问题(我正在接收 HQL,无法更改它)。

最佳答案

尝试使用相同的查询执行计数,如下所示:

Query query = getEm().createQuery("select a.id, a.activity.name from A a");

int count = query.getResultList().size();

或者,如果您想创建 native 查询,请配置您的persistence.xml 以启用日志语句。所以可以修改原来的select来进行countStatement logging and statistics

  • hibernate.show_sql
  • hibernate.format_sql
  • hibernate.use_sql_comments

    <properties>
    <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
    <property name="show_sql" value="true" />
    <property name="format_sql" value="true" />
    <property name="hibernate.hbm2ddl.auto" value="update" />
    </properties>

关于java - Hibernate HQL Count 和 Implicit Join 结果不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46458999/

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