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.