Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.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 Spring Boot-Jpa独特且可分页_Java_Spring_Postgresql_Spring Boot_Kotlin - Fatal编程技术网

Java Spring Boot-Jpa独特且可分页

Java Spring Boot-Jpa独特且可分页,java,spring,postgresql,spring-boot,kotlin,Java,Spring,Postgresql,Spring Boot,Kotlin,我有一个使用kotlin的SpringBootv2.1.8.RELEASE项目。 我们使用postgres数据库,我有以下JPA查询 @Query(value = " SELECT distinct grievance " + " FROM Grievance grievance" + " WHERE (grievance.auditProgramPortal=:auditProgramPortal AND grievance.

我有一个使用kotlin的SpringBootv2.1.8.RELEASE项目。 我们使用postgres数据库,我有以下JPA查询

    @Query(value = " SELECT distinct grievance " +
               " FROM Grievance grievance" +
               " WHERE (grievance.auditProgramPortal=:auditProgramPortal AND grievance.owner.id=:organizationId) " +
               " OR (grievance.status=:status AND grievance.auditProgramPortal=:auditProgramPortal)" +
               " OR (grievance.auditProgramPortal=:auditProgramPortal AND grievance.owner.id=:organizationId)" +
               " OR (grievance.auditProgramPortal=:auditProgramPortal AND grievance.publicSubmission=:publicSubmission)")
fun findAnalystBodyGrievances(
        auditProgramPortal: Boolean,
        organizationId: Long,
        status: GrievanceStatus,
        publicSubmission: Boolean,
        pageable: Pageable): Page<Grievance>
相关对象的代码片段如下所示

申诉

@Entity
@Audited
@Table(name = "grievance")
class Grievance {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    var id: Long? = null

    @Column(name = "title", nullable = false)
    var title: String? = null

    @Column(name = "description", columnDefinition = "text")
    var description: String? = null

    @Column(name = "public_description", columnDefinition = "text")
    var publicDescription: String? = null

    @Column(name = "related_to_identified_risk")
    var relatedToIdentifiedRisk: Boolean? = null


    @OneToOne
    @JoinColumn(name = "industry_id")
    var industry: Industry? = null
  }
行业

@Entity
@Table(name = "industry")
class Industry {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    var id: Long? = null

    @Column(name = "name", nullable = false, unique = true)
    var name: String? = null

    @Column(name = "color", nullable = false, unique = false)
    var color: String? = null
}
我的问题是-修复查询以便仍然返回页面的最简单方法是什么 如果我更新代码以使用以下查询,将返回一个通用对象

@Query(value = " SELECT distinct grievance, grievance.industry " +
               " FROM Grievance grievance" +
               " WHERE (grievance.auditProgramPortal=:auditProgramPortal AND grievance.owner.id=:organizationId) " +
               " OR (grievance.status=:status AND grievance.auditProgramPortal=:auditProgramPortal)" +
               " OR (grievance.auditProgramPortal=:auditProgramPortal AND grievance.owner.id=:organizationId)" +
               " OR (grievance.auditProgramPortal=:auditProgramPortal AND grievance.publicSubmission=:publicSubmission)")
非常感谢您在这方面提供的任何帮助

请尝试以下内容

@Query(value =" Select grievance from (SELECT distinct grievance, grievance.industry " +
" FROM Grievance grievance" +
" WHERE (grievance.auditProgramPortal=:auditProgramPortal AND grievance.owner.id=:organizationId) " +
" OR (grievance.status=:status AND grievance.auditProgramPortal=:auditProgramPortal)" +
" OR (grievance.auditProgramPortal=:auditProgramPortal AND grievance.owner.id=:organizationId)" +
" OR (grievance.auditProgramPortal=:auditProgramPortal AND grievance.publicSubmission=:publicSubmission))")

我使用了以下技巧-我介绍
@公式(这里的表达式)
作为实体中的一个字段,并通过表达式进行排序。Thank@StanislavL-您有任何关于如何使用它的有用示例吗?您在
pageable
参数中传递了什么?@KamilW这是org.springframework.data.domain.pageable对象的实例如果您在原始jpql中删除了distinct,那么它会进行排序吗?你能分享一下你是如何建立页面的吗?当行业是不满的一部分时,它不应该抛出这个错误。这是一个可能的解决方案,但我希望使用1个查询就可以了。感谢您的回复第一件事出现在我的脑海中,但更快的方法因为所有操作都将在数据库服务器上执行,如果我想到其他东西,我会添加
@Query(value =" Select grievance from (SELECT distinct grievance, grievance.industry " +
" FROM Grievance grievance" +
" WHERE (grievance.auditProgramPortal=:auditProgramPortal AND grievance.owner.id=:organizationId) " +
" OR (grievance.status=:status AND grievance.auditProgramPortal=:auditProgramPortal)" +
" OR (grievance.auditProgramPortal=:auditProgramPortal AND grievance.owner.id=:organizationId)" +
" OR (grievance.auditProgramPortal=:auditProgramPortal AND grievance.publicSubmission=:publicSubmission))")