0

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

我正在处理的应用程序将 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 处理本机查询?

4

1 回答 1

2

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

于 2013-07-26T18:28:30.740 回答