我有一个构造函数条件查询。对于构造函数,我试图做这样的事情:
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())
这样的东西,那么它看起来还不错。问题是,如果找不到OtherObject,我需要能够在那里传递null。我怎么能这样做?
我正在使用eclipselink作为提供商点击postgres。
答案 0 :(得分:0)
包括您正在使用的堆栈跟踪和版本。
注意,当()有两个方法时,一个接受Object,另一个接受Expression,确保你不会以某种方式调用带有Expression的方法。
答案 1 :(得分:0)
看起来我需要使用CriteriaBuilder文字或nullLiteral方法。像
这样的东西Expression nil = builder.literal(null);
// or
Expression<Date> nilDate = builder.nullLiteral(Date.class);
// then I can
blah.when(true, nilDate).otherwise(blah)
虽然我的查询仍然失败,但它不在我尝试直接使用null
的构造函数部分中。我认为其他问题与此无关。