Spring Data JPA-Spezifikation zu Wählen Bestimmte Spalten
Können wir wählen bestimmte Spalten, indem Sie benutzerdefinierte @Query-Methoden in unserem Repository-Schnittstelle. Allerdings möchte ich nicht schreiben, so viele Methoden für die verschiedenen Eigenschaften.
Ich habe versucht, aber es wird das gesamte Objekt die ganze Zeit.
public class MySpecifications {
public static Specification<MyInfo> propertiesWithId(final String[] properties, final Object id, final String idProperty)
{
return new Specification<MyInfo>() {
@Override
public Predicate toPredicate(Root<MyInfo> root,
CriteriaQuery<?> query, CriteriaBuilder cb) {
query = cb.createTupleQuery(); //tried cb.createQuery(MyInfo.class); as well
List<Selection<? extends Object>> selectionList = new ArrayList<Selection<? extends Object>>();
for (String property : properties) {
Selection<? extends Object> selection = root.get(property);
selectionList.add(selection);
}
return query.multiselect(selectionList).where(cb.equal(root.get(idProperty), id)).getRestriction();
}
};
}
}
als:
MyInfo findOne(Specification(properties,idValue, idProperty));
Ist das der richtige Weg? Wo ist der Fehler???
- Haben Sie sich überlegt mit Projektionen? baeldung.com/spring-data-jpa-projections
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die aktuelle spring data jpa-Spezifikation Testamentsvollstrecker beschränkt sich auf die Kriterien in der where-Klausel, so können Sie die ausgewählten Spalten, es ist beschränkt auf volle Einheiten nur. Du musst gehen mit einem benutzerdefinierten repository-Implementierung, oder verschieben Sie auf den Namen Abfragen-
Spring Data JPA und Querydsl zu Holen Teilmenge von Spalten mit Hilfe bean/Konstruktor Projektion
Diese Methode gibt eine einzige Person mit vorgegebenen Spezifikation. Bitte überprüfen Sie hier
Nach meinem Verständnis ist dies der richtige Weg. U Zugriff auf die Eigenschaften der Entität als normal (ZB. MyInfo.getIdProperty())