Java JPA2 case语句在构造函数查询中允许null

Java JPA2 case语句在构造函数查询中允许null,java,jpa,jpa-2.0,criteria,Java,Jpa,Jpa 2.0,Criteria,我有一个构造函数条件查询。对于构造函数,我尝试执行以下操作: query.select( builder.construct( MyView.class , metaObject , builder.selectCase( builder.isNull( metaOtherObject )).when( true, null ).otherwise( metaOtherObject.get( MetaOtherObject_.myDateField )) )); 如果使用whe

我有一个构造函数条件查询。对于构造函数,我尝试执行以下操作:

query.select( builder.construct( MyView.class
    , metaObject
    , builder.selectCase( builder.isNull( metaOtherObject )).when( true, null ).otherwise( metaOtherObject.get( MetaOtherObject_.myDateField ))
));
如果使用when(true,null)时使用
,则在该行上会得到一个NullPointerException。如果我使用类似于
when(true,new Date())
的东西,那么它看起来没问题。问题是,如果找不到其他对象,我需要能够在其中传递null。我该怎么做


我使用eclipselink作为访问postgres的提供者。

包括您正在使用的堆栈跟踪和版本


请注意,如果()有两个方法,一个接受对象,另一个接受表达式,请确保您没有以某种方式调用接受表达式的方法。

看起来我需要使用CriteriaBuilder literal或nullLiteral方法。差不多

Expression nil = builder.literal(null);
// or
Expression<Date> nilDate = builder.nullLiteral(Date.class);
// then I can 
blah.when(true, nilDate).otherwise(blah)
表达式nil=builder.literal(null);
//或
表达式nilDate=builder.nullLiteral(Date.class);
//那我就可以了
废话。当(真,nilDate)。否则(废话)
虽然我的查询仍然失败,但它不在构造函数部分,我只是尝试直接使用
null
。我相信其他问题与此无关