首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenJPA MapJoin key()抛出NullPointerException

OpenJPA MapJoin key()抛出NullPointerException
EN

Stack Overflow用户
提问于 2014-05-08 23:04:22
回答 1查看 101关注 0票数 0

我正在尝试对本地化字符串进行搜索。字符串由Map映射

以下是实体:

代码语言:javascript
复制
@Entity
@Table(name="category", schema="myschema")
@Access(AccessType.FIELD)
public class Category {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    Long id;

    @ElementCollection(fetch=FetchType.EAGER)
    Map<String, String> test = new HashMap<String, String>();

...
}

下面是查询:

代码语言:javascript
复制
Locale locale = Locale.ENGLISH;
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Category> criteria = cb.createQuery(Category.class);
Root<Category> category = criteria.from(Category.class);
criteria.select(category);
MapJoin<Category, String, String> tests = category.join(Category_.test);

Predicate searchClause = cb.and(
                                cb.equal(tests.key(), locale.toString()), 
                                cb.like(tests.value(), search)
                               );

entityManager.createQuery(criteria).getResultList();

当查询被执行时,我得到这个堆栈跟踪:

代码语言:javascript
复制
[err] java.lang.NullPointerException
[err]   at org.apache.openjpa.jdbc.kernel.exps.PCPath.<init>(PCPath.java:105)
[err]   at org.apache.openjpa.jdbc.kernel.exps.JDBCExpressionFactory.newPath(JDBCExpressionFactory.java:302)
[err]   at org.apache.openjpa.persistence.criteria.Joins$MapKey.toValue(Joins.java:625)
[err]   at org.apache.openjpa.persistence.criteria.Expressions.toValue(Expressions.java:66)
[err]   at org.apache.openjpa.persistence.criteria.Expressions$Equal.toKernelExpression(Expressions.java:851)
[err]   at org.apache.openjpa.persistence.criteria.PredicateImpl.toKernelExpression(PredicateImpl.java:171)
[err]   at org.apache.openjpa.persistence.criteria.CriteriaExpressionBuilder.evalFilter(CriteriaExpressionBuilder.java:216)
[err]   at org.apache.openjpa.persistence.criteria.CriteriaExpressionBuilder.getQueryExpressions(CriteriaExpressionBuilder.java:75)
[err]   at org.apache.openjpa.persistence.criteria.CriteriaQueryImpl.getQueryExpressions(CriteriaQueryImpl.java:418)
[err]   at org.apache.openjpa.persistence.criteria.CriteriaBuilderImpl.eval(CriteriaBuilderImpl.java:83)
[err]   at org.apache.openjpa.kernel.ExpressionStoreQuery$DataStoreExecutor.<init>(ExpressionStoreQuery.java:763)
[err]   at org.apache.openjpa.kernel.ExpressionStoreQuery.newDataStoreExecutor(ExpressionStoreQuery.java:179)
[err]   at org.apache.openjpa.kernel.QueryImpl.createExecutor(QueryImpl.java:749)

我不知道会出什么问题。显然key()函数不能正常工作。

我使用openjpa-2.2.3-SNAPSHOT-r422266

EN

回答 1

Stack Overflow用户

发布于 2014-05-09 09:06:25

闻起来像虫子。请报告JIRA against OpenJPA.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23545567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档