Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JpaRepository count distinct未按预期工作_Java_Scala_Count_Spring Data Jpa_Distinct - Fatal编程技术网

Java JpaRepository count distinct未按预期工作

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")

出于某种奇怪的原因,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

即时通讯使用:

            <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>