Java JpaRepository count distinct未按预期工作
出于某种奇怪的原因,Jpa生成的查询没有按预期生成。我使用jpa在我的存储库中编写了以下查询: 我的目标Java JpaRepository count distinct未按预期工作,java,scala,count,spring-data-jpa,distinct,Java,Scala,Count,Spring Data Jpa,Distinct,出于某种奇怪的原因,Jpa生成的查询没有按预期生成。我使用jpa在我的存储库中编写了以下查询: 我的目标 @Id @GeneratedValue(strategy = GenerationType.IDENTITY) var id: Long = _ @Column(name = "global_event_id", nullable = false) var globalEventId: Long = _ @Column(name = "date_created")
@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)
即时通讯使用:
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.1-api</artifactId>
<version>1.0.0.Final</version>
</dependency>
org.hibernate.javax.persistence
hibernate-jpa-2.1-api
1.0.0.1决赛
你知道为什么吗?你正在尝试使用超出其功能范围的查询派生
distinct
专门用于获得不同的结果
count
总是通过只计算ID来有效地计算所有行
无法进行查询派生以进行count(distinct)
甚至count()
改用
@Query
注释 谢谢!事实上,我必须这么做。
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.1-api</artifactId>
<version>1.0.0.Final</version>
</dependency>