【发布时间】:2013-03-04 10:01:38
【问题描述】:
我花了一整天的时间试图让原生 SQL 与 JPA 一起运行,用于遗留迁移项目。我已将查询简化为应该工作的内容。
Query query = localEm.createNativeQuery("SELECT ID FROM TABLE");
List results = query.getResultList();
但我通过 query.getResultList() 从 JPA 代码中获得了 NPE:
org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:328) 处出现 NullPointerException
这让我发疯。我已经搜索了QueryImpl source。我正在使用 IBM WebSphere,(WSJPA 2.1.1-SNAPSHOT 和 OpenJPA 2.1.1-SNAPSHOT),所以行号没有帮助,但看起来这部分代码没有任何重大变化2.2.0。但我看不出他们的代码有什么问题。我与 localEm(实体管理器)的其他 JPA 调用工作正常。
有人有想法吗?
【问题讨论】:
-
micAcc的类型和值是什么?相应列的数据类型是什么?也许你遇到了映射问题。如果从查询中删除mic_acc字段会怎样? -
micAcc 是一个String,'D000001546',在db中列是CHAR(10),在mapping中映射为String。删除 WHERE 子句仍会导致 getResultList() 中出现 NPE。
-
请忽略前三个 cmets,因为我开始询问有关 query.setParameter() 抛出 NPE 的问题。我删除了问题中的 WHERE 子句,所以现在是关于 getResultList 抛出 NPE 的问题。