如何将SQL本机查询的结果映射到java POJO类(无实体)

如何将SQL本机查询的结果映射到java POJO类(无实体),java,sql,hibernate,jpa,annotations,Java,Sql,Hibernate,Jpa,Annotations,我有一个简单的JavaPOJO,它不是实体 class MyClass { // fields, getter, setter and etc... } 我还有一个DAO,它带有一些执行本机SQL查询(createNativeQuery)的函数 没有@Entity,如何将SQL本机查询的结果映射到MyClass?您只需发出一个查询并调用POJO类中的getter/setter即可。 伪代码: get connection ResultSet rs = execute query if

我有一个简单的JavaPOJO,它不是实体

class MyClass {
    // fields, getter, setter and etc...
}
我还有一个DAO,它带有一些执行本机SQL查询(createNativeQuery)的函数


没有@Entity,如何将SQL本机查询的结果映射到MyClass?

您只需发出一个查询并调用POJO类中的getter/setter即可。 伪代码:

get connection
ResultSet rs = execute query
if (rs.next()) {
  setField1(rs.getString("field1"));
  etc....
}

如果bean字段名与DB表的列名相同,则可以使用springjdbc的
org.springframework.JDBC.core.BeanPropertyRowMapper

您使用BeanPropertyRowMapper对象调用
org.springframework.jdbc.core.simple.SimpleJDCoperations.queryForObject(字符串、行映射器、对象…
),它使用反射为您调用所有设置器。

如果是JPA,我使用: Query Query=getEntityManager().createNativeQuery(sql.toString(),MyClass.class)


如果MyClass是EntityBean:-(

您可以使用EclipseLink查询重定向器。下面的链接对此进行了解释。作者还提供了非常通用且运行良好的代码


如果你不能将其变成实体,我认为这是你唯一的途径。如果不按照另一个答案中的建议引入另一个框架。除非MyClass.class用@entity注释,否则它将无法工作