gpt4 book ai didi

java - 从 Spring Data JPA 查询方法返回自定义集合

转载 作者:行者123 更新时间:2023-12-01 16:46:16 25 4
gpt4 key购买 nike

我希望我的自定义查询方法返回特定的 Guava 集合类型(在我的示例中为 ImmutableSet)。

示例:

public interface MyRepository extends CrudRepository<User,UserId> {

@Query("SELECT DISTINCT u FROM User u WHERE... ORDER BY ...")
ImmutableSet<User> findByxxxx();

}

当我尝试时,我得到:

Failed to convert from type [java.util.ArrayList<?>] to type [com.google.common.collect.ImmutableSet<?>]
...
Caused by: java.lang.IllegalArgumentException: Could not instantiate Collection type: com.google.common.collect.ImmutableSet

documentation没有明确列出 Guava 集合类型,所以我不确定如果没有新版本就不可能,或者是否有一些配置可以使其工作。

如何指示 Spring Data JPA 使用该类型?

最佳答案

Spring data 不支持来自任何第三方库的集合,并且可能永远不会......

CrudRepository 向您公开一个 Iterable,如果您想实现自定义集合,则由您决定。

顺便说一句,如果您希望存储库返回自定义集合类型,您可以用您的存储库来装饰 Spring 数据存储库。像这样

interface JpaUserRepository extends CrudRepository<User,UserId> {

@Query("SELECT DISTINCT u FROM User u WHERE... ORDER BY ...")
Iterable<User> findByxxxx();

}
public class MyRepository {

private final JpaUserRepository jpaUserRepository;

@Autowired
public MyRepository(final JpaUserRepository jpaUserRepository) {
this.jpaUserRepository = jpaUserRepository;
}

public ImmutableSet<User> findByxxxx() {
return ImmutableSet.copyOf(jpaUserRepository.findByXXX());
}

}

关于java - 从 Spring Data JPA 查询方法返回自定义集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61771073/

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