gpt4 book ai didi

mysql - 如何使用 Spring Data JPA 从表中的列中检索唯一字符串字段的列表?

转载 作者:行者123 更新时间:2023-11-29 18:22:08 35 4
gpt4 key购买 nike

我有一个包含多行和多列的表格。我想使用 JpaRepository 检索列的所有字段的列表。

我应该将查询编写为:

SELECT DISTINCT field2 FROM entity;

并用@Query(QUERY_STRING)注释该方法

或者有更简单的方法使用 JPA 吗?

谢谢。

最佳答案

如果您需要获取一个字段的值列表,您可以执行以下操作:

public interface MyEntityRepo extends JpaRepository<MyEntity, Integer> {

@Query("select distinct e.field1 from MyEntity e")
List<String> getField1Values();
}

如果您需要获取许多字段的值列表,我可以向您建议这个技巧 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;
}
}

然后为您需要获取值列表的表字段创建投影,并为每个投影调用方法 getFieldValues,例如:

public interface Field1 extends OneField<String> {

@Override
default String getValue() {
return getField1();
}

String getField1();
}

List<?> values = repo.getFieldValues(Field1.class);

关于mysql - 如何使用 Spring Data JPA 从表中的列中检索唯一字符串字段的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46490770/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com