[英]Hibernate generates error SQL like “.=.”
我在Oracle DB中有3个表,它们之间的关系是@ManyToMany。 因此,我有2个重要的表和一个用于映射的表。
我创建了一个名称为Entities,Keywords(如果您愿意的话,可以显示我的班级)的类(我知道命名不正确,但这不是我的项目,我只做优化)。
我使用的是休眠版本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:缺少表达式
当我将此查询复制到OracleDevepoler时,他不喜欢该表达式“ 和。=。 ”。 没有该查询,将执行正确。
我究竟做错了什么 ?
也许您在查询中使用了错误连接? 根据上下文,我得出结论,您应该使用类似的方法:
"SELECT DISTINCT r FROM Rules r inner join r.entities e " +
" WHERE e IN :entities ";
我认为正确的查询可能是
select distinct e.rules from Entities where e.entityId in :entities
这是如果“关键字”是您的联接表,并且您在“实体”中有一组规则
如果不是,请显示映射,这可能会有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.