hql 'または'を使用した間違った結果

ToSar

ここで何が欠けているのかわかりません。私は次のようにクエリを実行しようとしています:

String query = "select e from Event e where (eventType.operation='LIKE' and relatedPost.creatorPerson.personId=:person1Id)"
                + " or (eventEntity.relatedEntity='PERSON' and eventType.operation='FOLLOW' and relatedPerson.personId=:personId)"
                + " order by creationDate desc";
beginTx();
Query q = session.createQuery(query);
q.setInteger("personId", id1);
q.setInteger("personId1", id2);
List<Event> events = q.list();
commitTx();

'または'の両側を個別にクエリすると、正しい結果が得られます。しかし、上記のクエリ全体を実行すると、「または」の左側の結果が得られます。

何か助けてください?

rostbot

さて、今私は私のコメントについてかなり確信しています...

問題はrelatedPost.creatorPerson、内部結合(実際には2つでも)が発生するため、orwhenrelatedPostまたはrelatedPost.creatorPersonisの正しい部分の結果が得られないことですnullいくつかの左結合を明示的に指定すると、結果が得られるはずです。

select e from Event e 
left join e.relatedPost as rp 
left join rp.creatorPerson as cp
where (eventType.operation='LIKE' and cp.personId=:person1Id) 
or (eventEntity.relatedEntity='PERSON' and eventType.operation='FOLLOW' and relatedPerson.personId=:personId) order by creationDate desc

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

GROUP BYMONTHは間違った結果をもたらします

分類Dev

Timedelta操作は間違った結果をもたらします

分類Dev

PHPでsscanfを使用した場合の間違った結果

分類Dev

SOFTLAYER REST API objectFilter を使用した間違った結果

分類Dev

クエリHibernateまたはHQLが結果を返さない

分類Dev

File.isFileは()間違った結果を返しますか?

分類Dev

MySQL移動平均は間違った結果を出します

分類Dev

Math.cos()は間違った結果を出します

分類Dev

listviewonClickは間違った結果を返します

分類Dev

TOSVersionは間違った結果を出します

分類Dev

Math.powは間違った結果を出します

分類Dev

base64は間違った結果を出します

分類Dev

MySQLクエリは間違った結果を出します

分類Dev

DATEのOracleSQL比較は間違った結果を返します

分類Dev

集計+平均は間違った結果を返します

分類Dev

php max()関数は間違った結果を出します

分類Dev

Java Stream.sorted()は間違った結果を出します

分類Dev

OpenCVfilter2dは間違った結果を出します

分類Dev

GradientDescentOptimizer が間違った結果を取得しました

分類Dev

間違った結果を与える Where 句を使用した MySQL 完全結合

分類Dev

Hibernateは間違った結果セットを返し、間違ったクエリを生成します

分類Dev

一致を使用したMySQL全文検索は間違った結果セットを返します

分類Dev

OpenMPの崩壊は間違った結果をもたらします

分類Dev

モジュラスは間違った結果をもたらしますか?

分類Dev

Timedeltaとの時差は間違った結果をもたらします

分類Dev

Pythonのreplace関数は間違った結果をもたらします

分類Dev

正規表現は間違った結果をもたらします

分類Dev

iter_swapは間違った結果をもたらします

分類Dev

Google SheetsVALUE関数は間違った結果をもたらします

Related 関連記事

  1. 1

    GROUP BYMONTHは間違った結果をもたらします

  2. 2

    Timedelta操作は間違った結果をもたらします

  3. 3

    PHPでsscanfを使用した場合の間違った結果

  4. 4

    SOFTLAYER REST API objectFilter を使用した間違った結果

  5. 5

    クエリHibernateまたはHQLが結果を返さない

  6. 6

    File.isFileは()間違った結果を返しますか?

  7. 7

    MySQL移動平均は間違った結果を出します

  8. 8

    Math.cos()は間違った結果を出します

  9. 9

    listviewonClickは間違った結果を返します

  10. 10

    TOSVersionは間違った結果を出します

  11. 11

    Math.powは間違った結果を出します

  12. 12

    base64は間違った結果を出します

  13. 13

    MySQLクエリは間違った結果を出します

  14. 14

    DATEのOracleSQL比較は間違った結果を返します

  15. 15

    集計+平均は間違った結果を返します

  16. 16

    php max()関数は間違った結果を出します

  17. 17

    Java Stream.sorted()は間違った結果を出します

  18. 18

    OpenCVfilter2dは間違った結果を出します

  19. 19

    GradientDescentOptimizer が間違った結果を取得しました

  20. 20

    間違った結果を与える Where 句を使用した MySQL 完全結合

  21. 21

    Hibernateは間違った結果セットを返し、間違ったクエリを生成します

  22. 22

    一致を使用したMySQL全文検索は間違った結果セットを返します

  23. 23

    OpenMPの崩壊は間違った結果をもたらします

  24. 24

    モジュラスは間違った結果をもたらしますか?

  25. 25

    Timedeltaとの時差は間違った結果をもたらします

  26. 26

    Pythonのreplace関数は間違った結果をもたらします

  27. 27

    正規表現は間違った結果をもたらします

  28. 28

    iter_swapは間違った結果をもたらします

  29. 29

    Google SheetsVALUE関数は間違った結果をもたらします

ホットタグ

アーカイブ