将getResultList转换为ResultSet

时间:2013-07-26 18:19:07

标签: jpa

我在这里寻求一些建议。我想知道是否有理由不这样做。众所周知,仅仅因为你可以做某事,并不意味着你应该这样做。

我正在处理的应用程序是将JPA与现有表一起使用。哪里可以,我们使用的是实体,但对于很多现有的SQL,我们使用的是本机查询。在许多这些查询中,我们不返回实体,因此使用本机查询。所以,我想知道是否有理由不这样做:

ResultSet rs = (ResultSet) em.createNativeQuery('NativeQueryString').getResultList();

while (rs.next()) {
    person.setName(rs.getString('name'));
    person.setHeight(rs.getString('height'));
}

我们现在正在做的是:

List results = em.createNativeQuery('NativeQueryString').getResultList();

for(Object result : results) {
        Object [] items = (Object[]) result;
        person.setName(items[0].toString);
        person.setHeight(items[1].toString);
    }

或者有更好的方法来处理JPA的本机查询吗?

1 个答案:

答案 0 :(得分:2)

是否有理由不将JPQL Native Query结果强制转换为JDBC ResultSet?因为结果不是ResultSet,根据JPA规范,它被定义为返回Object或Object [],具体取决于返回的cols数