![](/img/trans.png)
[英]How to return a custom object from a Spring Data JPA GROUP BY query
[英]Return custom collection from Spring Data JPA query method
我希望我的自定義查詢方法返回特定的 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
文檔沒有明確列出 Guava 集合類型,所以我不確定如果沒有新版本是不可能的,或者是否有一些配置可以使它工作。
如何指示 Spring 數據 JPA 使用該類型?
Spring 數據不支持來自任何第三方庫的 collections 並且可能永遠不會支持...
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());
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.