如何将 SQL 本机查询的结果映射到 java POJO 类(无实体)
我有简单的 java pojo,它不是实体。
class MyClass {
// fields, getter, setter and etc...
}
另外,我有 DAO 和一些用于执行本机 SQL 查询(createNativeQuery)的函数,
如何在没有 @Entity 的情况下将 SQL 本机查询的结果映射到 MyClass ?
I have simple java pojo and it's no entity.
class MyClass {
// fields, getter, setter and etc...
}
Also I have DAO with some function for execute native SQL query (createNativeQuery)
How can mapped result from SQL native query to MyClass without @Entity ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
如果 bean 字段名称与数据库表的列名称相同,则可以使用 Spring JDBC 的 org.springframework.jdbc.core.BeanPropertyRowMapper。
您使用 BeanPropertyRowMapper 对象调用 org.springframework.jdbc.core.simple.SimpleJdbcOperations.queryForObject(String, RowMapper, Object...)) ,它会为您调用所有设置器,使用反射。
If the bean field names are the same as the DB table's column names, you can use Spring JDBC's
org.springframework.jdbc.core.BeanPropertyRowMapper<T>
.You call
org.springframework.jdbc.core.simple.SimpleJdbcOperations.queryForObject(String, RowMapper<T>, Object...)
) with the BeanPropertyRowMapper object and it calls all the setters for you, using reflection.如果是 JPA,我会使用:
查询 query = getEntityManager().createNativeQuery(sql.toString(), MyClass.class);
如果 MyClass 是 EntityBean,它就可以工作:-(
If its JPA, I'd used:
Query query = getEntityManager().createNativeQuery(sql.toString(), MyClass.class);
It works if MyClass is an EntityBean :-(
您可以简单地发出查询并调用 POJO 类中的 getter/setter。
伪代码:
You can simply issue a query and call the getters/setters in your POJO class.
Pseudo-code:
您可以使用 EclipseLink 查询重定向器。下面的链接对此进行了解释。作者还提供了非常通用且运行良好的代码。
http://onpersistence.blogspot.in/2010/07/eclipselink -jpa-native-constructor.html
You can use EclipseLink query redirector. The following link explains it. The author has also provided code which is pretty generic and works quite well.
http://onpersistence.blogspot.in/2010/07/eclipselink-jpa-native-constructor.html