Java OpenJPA MapJoin key()抛出NullPointerException

Java OpenJPA MapJoin key()抛出NullPointerException,java,jpa,nullpointerexception,openjpa,Java,Jpa,Nullpointerexception,Openjpa,我正在尝试对本地化字符串进行搜索。 字符串由映射映射 以下是实体: @Entity @Table(name="category", schema="myschema") @Access(AccessType.FIELD) public class Category { @Id @GeneratedValue(strategy = GenerationType.AUTO) Long id; @ElementCollection(fetch=FetchType.E

我正在尝试对本地化字符串进行搜索。 字符串由映射映射 以下是实体:

@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>();

...
}
@实体
@表(name=“category”,schema=“myschema”)
@访问权限(AccessType.FIELD)
公共类类别{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
长id;
@ElementCollection(fetch=FetchType.EAGER)
Map test=newhashmap();
...
}
以下是查询:

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();
Locale=Locale.ENGLISH;
CriteriaBuilder cb=entityManager.getCriteriaBuilder();
CriteriaQuery criteria=cb.createQuery(Category.class);
根类别=标准.from(category.class);
标准。选择(类别);
MapJoin测试=category.join(category.test);
谓词search子句=cb.and(
cb.equal(tests.key(),locale.toString()),
cb.like(tests.value(),search)
);
entityManager.createQuery(条件).getResultList();
执行查询时,我得到以下堆栈跟踪:

[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)
[err]java.lang.NullPointerException
[err]位于org.apache.openjpa.jdbc.kernel.exps.PCPath(PCPath.java:105)
[err]位于org.apache.openjpa.jdbc.kernel.exps.jdbexpressionfactory.newPath(jdbexpressionfactory.java:302)
[err]位于org.apache.openjpa.persistence.criteria.Joins$MapKey.toValue(Joins.java:625)
[err]位于org.apache.openjpa.persistence.criteria.Expressions.toValue(Expressions.java:66)
[err]位于org.apache.openjpa.persistence.criteria.Expressions$Equal.toKernelExpression(Expressions.java:851)
[err]位于org.apache.openjpa.persistence.criteria.PredicateImpl.toKernelExpression(PredicateImpl.java:171)
[err]位于org.apache.openjpa.persistence.criteria.CriteriaExpressionBuilder.evalFilter(CriteriaExpressionBuilder.java:216)
[err]位于org.apache.openjpa.persistence.CriteriaExpressionBuilder.getQueryExpressions(CriteriaExpressionBuilder.java:75)
[错误]位于org.apache.openjpa.persistence.CriteriaQueryImpl.getQueryExpressions(CriteriaQueryImpl.java:418)
[err]位于org.apache.openjpa.persistence.criteria.CriteriaBuilderImpl.eval(CriteriaBuilderImpl.java:83)
[err]位于org.apache.openjpa.kernel.ExpressionStoreQuery$DataStoreExecutor.(ExpressionStoreQuery.java:763)
[err]位于org.apache.openjpa.kernel.ExpressionStoreQuery.newDataStoreExecutor(ExpressionStoreQuery.java:179)
[err]位于org.apache.openjpa.kernel.QueryImpl.createExecutor(QueryImpl.java:749)
我不知道会出什么问题。显然,key()函数不能正常工作


我使用的openjpa-2.2.3-SNAPSHOT-r422266闻起来像个bug。请报告一份报告