Spring Data JPA规范与投影

a64a0gku  于 2023-08-05  发布在  Spring
关注(0)|答案(1)|浏览(172)

我尝试使用规范与投影,但我得到一个错误:Exception.js错误类型:org.springframework.core.convert.ConverterNotFoundException:未找到能够从类型[com.entity.ParticipationEntity]转换为类型[com.entity.TenantOnly]的转换器
以下是预测:

public interface TenantOnly {
    String getTenantId();
}

字符串
我的repository方法是:

List<TenantOnly> tenantOnlies = participationSpringDataRepository.findAll(
                Specification.where(tenantIdIn(tenantIds)));


和participationSpringDataRepository扩展了JpaSpecificationExecutor

public interface ParticipationSpringDataRepository extends JpaRepository<ParticipationEntity, Long>, JpaSpecificationExecutor<ParticipationEntity> {


构建版本为:org.springframework. Boot :spring-boot-starter-data-jpa:3.0.5 org.postgresql:postgresql:42.6.0
我尝试使用findBy调用仓库:

public List<String> getParticipatingTenants(List<String> tenantIds,  List<String> programIds, OffsetDateTime processedDate){
    List<TenantOnly> tenantOnlies = participationSpringDataRepository.findBy(Specification.where(tenantIdIn(tenantIds)),
                q -> q.as(TenantOnly.class).all());

    return tenantOnlies.stream().map(tenantOnly -> tenantOnly.getTenantId()).toList();
}


但是select查询具有所有列。如何只选择投影中提到的列及其不同的值?

tyky79it

tyky79it1#

尝试以下解决方案:
[1]确保投影接口TenantOnly与存储库接口位于同一个包(或子包)中。这是因为SpringDataJPA在存储库接口的同一个包或子包中查找投影接口。
[2]检查项目的构建文件中是否有必要的依赖项(例如,Maven的pom.xml或Gradle的build.gradle)以支持Spring Data JPA及其转换器。确保您指定了Spring Data JPA依赖项的适当版本。
[3]验证类路径中是否有JpaSpecificationExecutor的适当实现。在您的例子中,由于您正在存储库接口中扩展JpaSpecificationExecutor,因此请确保在项目依赖项中配置了适当的JPA实现(例如Hibernate)。
[4]如果您在应用程序中使用任何自定义转换器,请确保它们已正确注册到Spring Data JPA的ConversionService或通过@Converter注解。
[5]如果上述解决方案都不起作用,您可以尝试在存储库方法上使用@Projection注解显式地指定投影类型。修改您的存储库方法,如下所示:
@Projection(name =“tenantOnly”,types = { ParticipationEntity.class })interface TenantOnlyProjection { String getTenantId();}
List tenantOnlies = participationSpringDataRepository.findAll(Specification.where(tenantIdIn(tenantIds)),TenantOnlyProjection.class);
这显式地告诉Spring Data JPA使用TenantOnlyProjection作为查询的投影类型。

相关问题