JPA CRITERIA-QUERY mit order by verknüpften Spalten

Gewusst wie: aufrufen, um auf eine gemeinsame Entität? Ich bin versucht zu erreichen, Sie Folgendes mit:

select * from person p inner join Telefon t auf p.id=t.person_id join-sim-s on s.id=t.sim_id order by s.name DESC

@Entity
public class Person implements Serializable{
    @Id
    private Long id;
    @OneToMany(orphanRemoval = true, mappedBy = "person", fetch = FetchType.LAZY, cascade = CascadeType.PERSIST)
    private List<Telephone> telephonesNumber;

@Entity
public class Telephone implements Serializable {
    @Id
    private String number;
    @Id
    @ManyToOne()
    @JoinColumn(name = "person_id")
    private Person person;
    @Id
    @ManyToOne(cascade = {})
    @JoinColumn(name = "sim_id")
    private Sim sim;

@Entity
public class Sim implements Serializable {
    @Id
    private Long id;
    @Column(unique = true)
    private String name;

Ich benutze Spezifikation interface, in diesem Beispiel ist die Sortierung auf das Feld person.id und es funktioniert

public class PersonSpecification implements Specification<Person> {

    @Override
    public Predicate toPredicate(Root<Person> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
         List<Predicate> predicates = new ArrayList<>();
//there is many different conditions for example
//      if(someCondition!=null) {
//         predicates.add(builder.like(root.get("someProperty"), someValue));
//     }


        query.groupBy(root.get("id"));
        //there I want to order by Sim.name i dont know how
        query.orderBy(builder.asc(root.get("phone")));//this works
        return  builder.and((predicates.toArray(new Predicate[predicates.size()])));
    }

Ich möchte bestellen durch Sim.Namen, aber ich weiß nicht wie.

  • wo sind deine Kriterien Abfrage, die Sie versucht haben?
  • thx für die Frage, ich update meinen post über das, was ich geschafft bisher
InformationsquelleAutor Wait | 2016-12-16
Schreibe einen Kommentar