Spring Data JPA: Sortierung und paging mit verknüpften Tabellen
Habe ich ein Szenario, wo ich will, zu filtern, zu Sortieren und die Seite über eine Folge, wo 3 Tische nehmen Teil.
Im moment nutze ich Spring Data JPA ist die Spezifikation Funktion um es auf eine einzige Person: repository.findAll(specification, pageRequest)
.
Diese funktioniert Super, aber jetzt habe ich ein weiteres Szenario, in dem die Sortierung /filter-Attribute, die sich auf 3 Tabellen, die miteinander verbunden sind durch die eins-zu-viele-Beziehungen.
Hier ist mein Szenario:
@Entity
public class CustomerEntity ... {
...
@Column(nullable = false)
public String customerNumber;
@OneToMany(mappedBy = "customer", cascade = CascadeType.ALL, orphanRemoval = true)
public List<CustomerItemEntity> items;
}
@Entity
public class CustomerItemEntity ... {
...
@Column(nullable = false)
public String itemNumber;
@ManyToOne(optional = false)
@JoinColumn(name = "customerId")
public CustomerEntity customer;
@OneToMany(mappedBy = "item", cascade = CascadeType.ALL, orphanRemoval = true)
public List<DocumentEntity> documents;
}
@Entity
public class DocumentEntity ... {
...
@Column(nullable = false)
public LocalDate validDate;
@ManyToOne(optional = false)
@JoinColumn(name = "itemId")
public CustomerItemEntity item;
}
Gibt es eine Möglichkeit zu nutzen PageRequest
und Specification
wo customerNumber
, itemNumber
und validDate
sind für die Filterung, Sortierung und paging in der gleichen Zeit?
- Vergessen Sie nicht zu akzeptieren/upvote Antworten haben dir geholfen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Probieren Sie etwas wie dieses:
Aber ich weiß nicht, warum tun Sie müssen
Specification
hier?Können Sie die gleichen einfacher:
Aber all das macht keinen Sinn, da Ihr drei Personen aufeinanderfolgende eins-zu-viele-Assoziationen. In diesem Fall anstelle der drei Bedingungen, die Sie verwenden können, nur die Letzte:
where d.validDate = ?1
. Dann eine query-Methode wurde sogar noch einfacher:UPDATE
Hinzufügen, Sortieren nach einem Feld der verknüpften Entität können wir verwenden
orderBy
Methode derquery
:Sortieren, indem Sie mehrere Parameter übergeben Sie der Methode getrennt durch Komma oder durch ein
List
:CustomerEntity
. Sie haben eine Idee, wie das Sortieren vonitemNumber
zum Beispiel?List<Object[]>
um die verknüpften Ergebnisse. Aber dann habe ich problem mit optionalen filter-Parameter. Ist es möglich Daten, sondern ändern Sie den Rückgabetyp zuList<Object[]>
wo ich weiter daran arbeiten kann, die raw-verknüpfte Daten?JpaSpecificationExecutor
Methoden zurück, nur entity matching der angegebenen Spezifikation, Sie können nicht zurückObject[]