簡體   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