Mysql
 sql >> Datenbank >  >> RDS >> Mysql

HQL generiert bei executeUpdate einen unvollständigen 'Cross Join'

Die Hibernate-Dokumentation sagt:

lt.trade.volume ist ein impliziter innerer Join zwischen LocationTrade und Trade, daher ist die Abfrage ungültig. Sie müssen es wie folgt umschreiben:

update LocationTrade lt set lt.hasVeryHighVolume=true where lt.locationIndices=? 
and lt.id in (
    select lt2.id from LocationTrade lt2 where lt2.trade.volume > 20000)

Oder Sie müssen stattdessen eine SQL-Abfrage verwenden.