[英]Spring JPA/Hibernate: use multiple projections on same query interface
這是一個類似的問題: 這個問題
我嘗試使用相同的解決方案,但出現此錯誤:
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: from near line 1, column 9 [select from com.app.company.domain.organization.Organization as generatedAlias0 where generatedAlias0.deletedAt is null]
看一下select
語句:沒有任何要求的字段!
任何想法?
在存儲庫中查詢:
<T extends JPAProjection > List<T> findAllByDeletedAtIsNull(Class<? extends JPAProjection> projection);
接下來,空白接口JPAProjection
和OrgId
投影接口用於僅檢索id
和name
:
public interface JPAProjection {}
public interface OrgId extends JPAProjection {
@Value("#{target.id}")
Long getId();
@Value("#{target.name}")
String getName();
}
然后,調用查詢:
return organizationRepository.findAllByDeletedAtIsNull(OrgId.class);
非常感謝Andrea
如果您要對多個投影使用單一查詢方法-您所需要的只是動態投影 :
interface MyEntityRepo extends Repository<MyEntity, Long> {
<T> T findById(Long id, Class<T> type);
}
然后,您也可以將此方法與投影和主要實體一起使用:
MyEntity entity = findById(1L, MyEntity.class);
MyProjection entityProjection = findById(1L, MyProjection.class);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.