繁体   English   中英

Spring JPA / Hibernate:在同一查询界面上使用多个投影

[英]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);

接下来,空白接口JPAProjectionOrgId投影接口用于仅检索idname

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM