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

时间:2011-06-21 13:33:23

标签: java sql hibernate jpa annotations

我有简单的java pojo,它不是实体。

class MyClass {
    // fields, getter, setter and etc...
}

此外,我还有DAO,它具有一些执行本机SQL查询(createNativeQuery)的功能

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

4 个答案:

答案 0 :(得分:1)

如果bean字段名称与DB表的列名相同,则可以使用Spring JDBC的org.springframework.jdbc.core.BeanPropertyRowMapper<T>

使用BeanPropertyRowMapper对象调用org.springframework.jdbc.core.simple.SimpleJdbcOperations.queryForObject(String, RowMapper<T>, Object...))并使用反射为您调用所有setter。

答案 1 :(得分:1)

如果是JPA,我会用: 查询query = getEntityManager()。createNativeQuery(sql.toString(),MyClass.class);

如果MyClass是EntityBean,它可以工作: - (

答案 2 :(得分:0)

您可以简单地发出查询并在POJO类中调用getters / setter。 伪代码:

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

答案 3 :(得分:0)

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

http://onpersistence.blogspot.in/2010/07/eclipselink-jpa-native-constructor.html