Si vous avez besoin pour obtenir une liste de valeur d'un champ, vous pouvez effectuer les opérations suivantes:
public interface MyEntityRepo extends JpaRepository<MyEntity, Integer> {
@Query("select distinct e.field1 from MyEntity e")
List<String> getField1Values();
}
Si vous avez besoin pour obtenir une liste de valeurs pour un grand nombre de domaines que je peux vous proposer cette astuce dynamic projection:
public interface MyEntityRepo extends JpaRepository<MyEntity, Integer> {
// T - it's a type of a concrete projection
<T extends OneField> List<T> getDistinctBy(Class<T> type);
default <T extends OneField> List<?> getFieldValues(Class<T> type) {
return getDistinctBy(type)
.stream()
.map(T::getValue)
.collect(Collectors.toList());
}
}
// T - it's a type of the table field
public interface OneField<T> {
default T getValue() {
return null;
}
}
Ensuite, créez des projections pour vos champs de table qui liste de valeurs dont vous avez besoin pour obtenir et invoquer la méthode getFieldValues
pour chaque projection, par exemple:
public interface Field1 extends OneField<String> {
@Override
default String getValue() {
return getField1();
}
String getField1();
}
List<?> values = repo.getFieldValues(Field1.class);
Ces informations ne sont pas dans tableName mais dans la table système de votre SGBD –
Avez-vous une [classe d'entité] (http://www.objectdb.com/java/jpa/entity/types#Entity_Classes_) liée à cette table ? – Cepr0
@ Cepr0 Oui, j'ai un objet Object qui a plusieurs champs field1, field2, field 3. Hibernate crée la table et je veux récupérer après une liste de toutes les valeurs (de dupliquées) de field2. – user3450862