当前位置: 首页 > 知识库问答 >
问题:

带有投影的Spring JPA本机查询提供“ConverterNotFoundException”

孔华池
2023-03-14
org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [org.springframework.data.jpa.repository.query.AbstractJpaQuery$TupleConverter$TupleBackedMap] to type [com.example.IdsOnly]
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@Entity
@Table(name = "TestTable")
public class TestTable {

    @Id
    @Basic(optional = false)
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    @Column(name = "Id")
    private Integer id;
    @Column(name = "OtherId")
    private String otherId;
    @Column(name = "CreationDate")
    @Temporal(TemporalType.TIMESTAMP)
    private Date creationDate;
    @Column(name = "Type")
    private Integer type;
}
import lombok.Value;

@Value // This annotation fills in the "hashCode" and "equals" methods, plus the all-arguments constructor
public class IdsOnly {

    private final Integer id;
    private final String otherId;
}
public interface TestTableRepository extends JpaRepository<TestTable, Integer> {

    @Query(value = "select Id, OtherId from TestTable where CreationDate > ?1 and Type in (?2)", nativeQuery = true)
    public Collection<IdsOnly> findEntriesAfterDate(Date creationDate, List<Integer> types);
}
@Autowired
TestTableRepository ttRepo;
...
    Date theDate = ...
    List<Integer> theListOfTypes = ...
    ...
    Collection<IdsOnly> results = ttRepo.findEntriesAfterDate(theDate, theListOfTypes);  

谢谢你的帮助。我真的不明白我做错了什么。

共有1个答案

徐麒
2023-03-14

使用spring数据,您可以省略中间人,并简单地定义

public interface IdsOnly {
  Integer getId();
  String getOtherId();
}

并使用本机查询,如;

@Query(value = "Id, OtherId from TestTable where CreationDate > ?1 and Type in (?2)", nativeQuery = true)
    public Collection<IdsOnly> findEntriesAfterDate(Date creationDate, List<Integer> types);

查看https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#投影

 类似资料:
  • 我有一个奇怪的问题,我不知道为什么会发生。我肯定我做错了什么,因为这是我第一次使用数据投影,而且我在使用DTOS时从来没有遇到过这样的问题。 我有一个SELECT statemen,它返回各种数据类型的某些列。我有一个接口,我将它传递给JPA存储库,这样它就可以进行接口映射。但是它不是根据列名映射结果(例如'accountnum'->),而是按照字母顺序映射列。因此,如果'date_of_orde

  • 我正在使用JPA投影,但当我的查询包含子查询时,它就失败了。例如: 下面是投影的界面: 和存储库: 关于如何使用JPA投影的子查询有什么想法吗? 谢谢。

  • 我正在使用Spring Boot 2.1.3.RELEASE,Spring Data JPA来处理PostgreSQL数据库。 列名使用下划线(例如),实体bean正常JavacamelCase、等。 我正在尝试使用投影接口编写本机查询,但我得到了值。示例: 当我运行它时,下划线分隔列返回null(这对于非本机查询很好)。 作为一个实验,我在投影中添加了一个名为getCreated\u by()的

  • 我试图通过示例查询来过滤数据。它适用于实体和基本体,但不适用于投影。你知道SpringDataJpa中是否有这样的功能吗?

  • 问题内容: 您好,我想按查询排除某些字段。我正在使用nodejs 但在结果集中,我一直在获取密码字段。 问题答案: 投影不适用于新的nodejs mongodb驱动程序…相反,您将不得不在 此处使用游标方法