我在这里寻求一些建议。我想知道是否有理由不这样做。众所周知,仅仅因为你可以做某事,并不意味着你应该这样做。
我正在处理的应用程序是将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的本机查询吗?
答案 0 :(得分:2)
是否有理由不将JPQL Native Query结果强制转换为JDBC ResultSet?因为结果不是ResultSet,根据JPA规范,它被定义为返回Object或Object [],具体取决于返回的cols数