如何将SQL本机查询的结果映射到java POJO类(无实体)
我有一个简单的JavaPOJO,它不是实体如何将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
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注释,否则它将无法工作