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???

InformationsquelleAutor Chinmay | 2014-03-04
Schreibe einen Kommentar