我有一个简单的java pojo,它不是实体。
class MyClass {
// fields, getter, setter and etc...
}
此外,我还有DAO,它具有一些用于执行本机SQL查询(createNativeQuery)的功能
如何在没有@Entity的情况下将SQL本机查询的结果映射到MyClass?
如果bean字段名称与DB表的列名相同,则可以使用Spring JDBC的org.springframework.jdbc.core.BeanPropertyRowMapper<T>
。
使用BeanPropertyRowMapper对象调用org.springframework.jdbc.core.simple.SimpleJdbcOperations.queryForObject(String, RowMapper<T>, Object...)
),它会使用反射为您调用所有的setter。
如果它是JPA,我会使用:查询查询=getEntityManager().createNativeQuery(sql.toString(),MyClass.class);
如果MyClass是EntityBean:-(
您可以简单地发出查询并调用POJO类中的getters/ssetter。伪代码:
get connection
ResultSet rs = execute query
if (rs.next()) {
setField1(rs.getString("field1"));
etc....
}
您可以使用EclipseLink查询重定向器。下面的链接对此进行了解释。作者还提供了一些非常通用的代码,并且运行得非常好。
http://onpersistence.blogspot.in/2010/07/eclipselink-jpa-native-constructor.html