Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.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
Sql JPA Order by有两列_Sql_Database_Jpa - Fatal编程技术网

Sql JPA Order by有两列

Sql JPA Order by有两列,sql,database,jpa,Sql,Database,Jpa,我有两个目标 对象:Objeto、Comunicado和ComunicadoTramite @Entity @Table(name = "objetos") @Inheritance(strategy = InheritanceType.JOINED) public class Objeto extends Fact { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "

我有两个目标

对象:Objeto、Comunicado和ComunicadoTramite

@Entity
@Table(name = "objetos")
@Inheritance(strategy = InheritanceType.JOINED)
public class Objeto extends Fact {    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id_objeto", unique = true, nullable = false)
    private Integer id;

    @NotNull
    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "dt_criacao")
    private Date dataCriacao;

}

@Entity
@Table(name = "comunicados")
@PrimaryKeyJoinColumn(name = "cd_comunicado")
public class Comunicado extends Objeto {

    @OneToMany(mappedBy = "comunicado")
    private List<ComunicadoTramite> tramites;

}

@Entity
@Table(name = "comunicados_tramites")
@PrimaryKeyJoinColumn(name = "cd_tramite")
public class ComunicadoTramite extends Objeto {

    @NotNull
    @ManyToOne
    @JoinColumn(name = "cd_comunicado")
    private Comunicado comunicado;
我不知道如何在JPA中做到这一点。。。有人能帮我吗

基于Jorge的想法我做了这个

SELECT obj FROM Objeto obj 
    WHERE obj.id IN (select comunicado.id from Comunicado comunicado 
                        where comunicado NOT IN (SELECT tramite.comunicado from ComunicadoTramite tramite)) 
                OR obj.id IN(select tramite.id from ComunicadoTramite tramite
                where tramite.dataCriacao = (select MAX(tram.dataCriacao) from ComunicadoTramite tram WHERE tram.comunicado.id = tramite.comunicado.id)
                group by tramite.comunicado)
ORDER BY obj.dataCriacao DESC
SELECT obj FROM Objeto obj 
    WHERE obj.id IN (select comunicado.id from Comunicado comunicado 
                        where comunicado NOT IN (SELECT tramite.comunicado from ComunicadoTramite tramite)) 
                OR obj.id IN(select tramite.id from ComunicadoTramite tramite
                where tramite.dataCriacao = (select MAX(tram.dataCriacao) from ComunicadoTramite tram WHERE tram.comunicado.id = tramite.comunicado.id)
                group by tramite.comunicado)
ORDER BY obj.dataCriacao DESC