1

oneToMany 関係 (「1 つのモデルは多くのイベントを持つことができます」) によって関連付けられた 2 つのオブジェクトがあります。

次のように、ejbql でサブクエリを作成して、1 つのイベントのモデルを見つけようとしています。

SELECT model 
FROM RegModelValue model 
WHERE :event IN (model.events) 

....しかし、トップリンクはモデルエイリアスを認識せず、「内部例外:行1:129:予期しないトークン:モデル」と教えてくれます

何か案は ?

よろしくお願いします!

4

2 に答える 2

0

順序が間違っていると思います。 を の:event前にすることはできませんIN

これを試して :

    SELECT model 
    FROM RegModelValue model 
    JOIN model.events events
    WHERE events.id = :event
于 2009-09-28T16:22:49.807 に答える
0

JPQL クエリの構文は次のとおりです。

SELECT model 
FROM RegModelValue model 
WHERE model.events IN (:event)

以下、JPA 1.0 仕様の関連セクション:

4.6.8 イン式

条件式で比較演算子 [NOT] IN を使用する構文は次のとおりです。

in_expression ::=
    state_field_path_expression [NOT] IN ( in_item {, in_item}* | subquery)
in_item ::= literal | input_parameter

state_field_path_expression には、文字列、数値、または列挙値が必要ですリテラルおよび/または input_parameter 値は、type の state_field_path_expressionと同じ抽象スキーマ タイプのようにする必要があります。(セクション 4.12 を参照)。

サブクエリの結果は、type のstate_field_path_expressionの抽象スキーマ タイプと同じでなければなりません。サブクエリについては、セクション4.6.15「サブクエリ」で説明しています。

例は次のとおりです。

o.country IN (’UK’, ’US’, ’France’) は に対して真、 に対してUK偽でPeruあり、式 と同等 (o.country = ’UK’) OR (o.country = ’US’) OR (o.country = ’ France’)です。

o.country NOT IN (’UK’, ’US’, ’France’)は に対して false 、 に対してUKtrue でPeruあり、式 と同等NOT ((o.country = ’UK’) OR (o.country = ’US’) OR (o.country = ’France’))です。

IN 式の値のセットを定義するコンマ区切りリストには、少なくとも 1 つの要素が必要です。

IN または NOT IN 式のstate_field_path_expressionの値 がNULLまたは不明である場合、式の値は不明です。

于 2010-09-11T07:30:14.603 に答える