[英]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.