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

时间:2018-02-08 14:42:03

标签: java hibernate jpa spring-data spring-data-jpa

这是一个类似的问题:this issue

我尝试使用相同的解决方案,但是我有这个错误:

select

查看<T extends JPAProjection > List<T> findAllByDeletedAtIsNull(Class<? extends JPAProjection> projection); 语句:没有请求任何字段!

有什么想法吗?

在存储库中查询:

JPAProjection

接下来,空白界面OrgIdid投影界面仅用于检索namepublic interface JPAProjection {} public interface OrgId extends JPAProjection { @Value("#{target.id}") Long getId(); @Value("#{target.name}") String getName(); }

return organizationRepository.findAllByDeletedAtIsNull(OrgId.class);

然后,调用查询:

readme :: Html

非常感谢, 安德烈

1 个答案:

答案 0 :(得分:2)

如果您想对多个投影使用单一查询方法 - 您只需要Dynamic projections

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);