如何将 JPA 查询结果映射到 POJO?

How to map JPA query results to a POJO?

@Query("SELECT tt, at.field, at.anotherField from TableTest tt LEFT JOIN AnotherTable at ON at.commonField = tt.commonField")
List<TestPojo> findAllPojo(List<TableTestDTO> TableTestDTOList);

如何在没有本机查询的情况下将此 JPA 查询结果映射到 Pojo,例如 this approach

我正在使用 JPA 和 Hibernate。谁能提供其他选择?

尝试使用构造函数:

@Query("SELECT new TestPojo(tt, at.field, at.anotherField) from TableTest tt LEFT JOIN AnotherTable at ON at.commonField = tt.commonField")
List<TestPojo> findAllPojo(List<TableTestDTO> TableTestDTOList);

当然这样的构造函数必须存在,更好的办法是放置完全限定名称而不是裸 TestPojo

好吧,您可以使用 @SqlResultSetMapping 注释,或者您可以创建自己的界面来将查询字段反映给它。您可以在此处找到这两个示例:

你也可以调用构造函数,就像@Andronicus 说的那样。