Spring Data JPA和Projection为TupleConverter获取ConverterNotFoundException

时间:2018-05-07 19:15:08

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

有没有办法在Spring Data中编写和注册<input type="text" placeholder="0" /> <input type="text" value="999" placeholder="0" /> <input type="text" placeholder="0" />转换器?当我在Repository界面中有一个@Query注释并要求Projection时,我得到了这个异常。

界面:

TupleConverter

DTO:

public interface ProjectRepository extends JpaRepository<Project, Integer> {
    @Query("select p.projectId, p.projectName, p.techstack from Project p")
    public List<ProjectItem> findAllForTest();
}

例外

  
    

没有找到能够从[org.springframework.data.jpa.repository.query.AbstractJpaQuery $ TupleConverter $ TupleBackedMap]类型转换为具有根本原因的[project.item.ProjectItem]]的转换器

  

2 个答案:

答案 0 :(得分:4)

答案 1 :(得分:2)

你关闭了。如果您只想要一个包含原始项目中的一些项目的DTO,只需使用interface projection技术,使用与您想要的Project类方法项具有相同签名的方法:

public interface ProjectTestSummary {
    public Integer getProjectId();
    public String getProjectName();
    public String getTechstack();
}

在你的DAO中:

public interface ProjectRepository extends JpaRepository<Project, Integer> {
    public List<ProjectTestSummary> findAllProjectedBy();
}