2011-11-08 13 views
1

私はコンストラクタ基準クエリを持っています。コンストラクタのために、私はこのような何かをしようとしています:JPA 2のcase文でコンストラクタクエリでNULLを使用できます

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を渡す必要があることです。どうやってやるの?

私はpostgresを打つプロバイダーとしてeclipselinkを使用しています。

答えて

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直接使用しようとしていたコンストラクタ部分ではありません。他の問題はこれとは無関係だと私は信じています。

0

使用しているスタックトレースとバージョンを含めます。

()には、Objectを取るメソッドとExpressionを取るメソッドの2つのメソッドがある場合、Expressionをとるメソッドが何とか呼び出されていないことを確認してください。

関連する問題