Sql JPA Order by有两列
我有两个目标 对象:Objeto、Comunicado和ComunicadoTramiteSql 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 = "
@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