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
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der JPA-Spezifikation, die Sie verwenden können:
Sortieren nach sim name.
Weitere details:
https://en.wikibooks.org/wiki/Java_Persistence/Querying#Joining.2C_querying_on_a_OneToMany_relationship
Wenn Sie mithilfe von JPA-Abfrage:
Wird es produzieren diese:
Weitere details:
https://github.com/abhilekhsingh041992/spring-boot-samples/blob/master/jpa/src/main/java/example/springboot/jpa/repository/PersonRepository.java