【发布时间】:2011-11-06 23:24:39
【问题描述】:
我正在尝试批量删除对象 Feature,该对象与另一个类 FeaturesMetadata 具有双向多对一关系。我抛出了一个 SQLGrammerException。
我正在使用的 hql:
String hql = "delete from Feature F where F.featuresMetadata.stateGeoId = :stateGeoId";
开启show SQL,生成如下:
delete from FEATURE cross join FEATURESMETADATA featuresme1_ where STATEGEOID=?
直接在 db 客户端中运行 SQL 会出现此异常:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'cross join FEATURESMETADATA featuresme1_ where stategeoid='01'' at line 1
由于生成的 SQL 抛出异常,我尝试将方言从 MySQL5InnoDBDialect 更改为 MySQLInnoDBDialect,但没有任何变化。
有人可以帮忙吗?
【问题讨论】:
-
FeaturesMetaData 是否有 FK to Feature?
-
Feature 对 FeaturesMetadata 有一个 FK。