我在 Oracle DB 中有 3 个关系为 @ManyToMany 的表。所以我有 2 个重要的表和一个用于映射的表。
我创建了一个名为实体、关键字的类(如果你愿意,我可以显示我的类)(我知道命名不正确,但这不是我的项目,我只做优化)。
我使用休眠版本 4.3.4。
我这样写查询:
session = HibernateUtil.getSessionFactory().openSession();
String sql = "SELECT DISTINCT r FROM Rules r, Entities e " +
" WHERE r.entities = e.rules " +
" AND e IN :entities ";
Query query = session.createQuery(sql);
query.setParameterList("entities", entitiesList);
List<Rules> rulesList = query.list();
但!Hibernate 生成奇怪的 SQL
Hibernate:
select
rules0_.rule_id as rule_id1_11_,
rules0_.rule as rule2_11_
from
rules rules0_,
entities entities1_,
rules_entities entities2_,
entities entities3_,
rules_entities rules4_,
rules rules5_
where
rules0_.rule_id=entities2_.rule_id
and entities2_.entity_id=entities3_.entity_id
and entities1_.entity_id=rules4_.entity_id
and rules4_.rule_id=rules5_.rule_id
and .=.
and (
entities1_.entity_id in (
? , ? , ? , ?
)
)
当我尝试执行此查询时,我收到该错误:java.sql.SQLException: ORA-00936: missing expression
当我将此查询复制到 OracleDevepoler 时,他不喜欢这个表达式“ and .=. ”。没有该查询执行正确。
我究竟做错了什么 ?