gpt4 book ai didi

java - JpaRepository 计数不同未按预期工作

转载 作者:行者123 更新时间:2023-12-02 08:41:24 27 4
gpt4 key购买 nike

由于某些奇怪的原因,Jpa 生成的查询没有按预期生成。我使用 jpa 在我的存储库中编写了以下查询:

我的对象

  @Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
var id: Long = _

@Column(name = "global_event_id", nullable = false)
var globalEventId: Long = _

@Column(name = "date_created")
@NotNull
@Type(`type` = "org.jadira.usertype.dateandtime.joda.PersistentDateTime")
var dateCreated: DateTime = _

@Column(name = "ip", nullable = false)
var ip: String = _

@Column(name = "email")
var email: java.lang.String = _

我的存储库

trait RequestRepository extends JpaRepository[Request, java.lang.Long] {    
def countDistinctIpByGlobalEventIdGreaterThanAndDateCreatedGreaterThanAndEmail(@Param("globalEventId") globalEventId: Long, @Param("dateCreated") dateCreated: DateTime, @Param("email") email: String): java.lang.Long
}

我期待生成以下查询

SELECT count(distinct(ip)) FROM rule_request WHERE global_event_id > ? AND email = ? AND date_created >= ?

但是生成的以下内容显然是错误的(对于初学者来说,id 而不是 ip)

select distinct count(request0_.id) as col_0_0_ from rule_request request0_ where request0_.global_event_id>? and request0_.date_created>? and request0_.email=?

我正在使用:

            <dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.1-api</artifactId>
<version>1.0.0.Final</version>
</dependency>

有什么想法吗?

最佳答案

您正在尝试使用超出其能力的查询派生。

distinct专门用于获得不同的结果。

count总是通过仅计算 id 来有效地计算所有行。

没有办法进行查询派生来生成 count( distinct <expression>)甚至是count( <expression>) .

使用 @Query改为注释。

关于java - JpaRepository 计数不同未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61369845/

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