Java Hibernate生成错误SQL,如“quot;=”&引用;
我在OracleDB中有3个表,它们之间的关系是@ManyToMany。所以我有两个重要的表和一个映射表 我创建了一个名为实体、关键字(我知道命名不正确,但这不是我的项目,我只做优化)的类(如果你愿意,我可以显示我的类) 我使用hibernate版本4.3.4 我这样写查询:Java Hibernate生成错误SQL,如“quot;=”&引用;,java,hibernate,generated-sql,Java,Hibernate,Generated Sql,我在OracleDB中有3个表,它们之间的关系是@ManyToMany。所以我有两个重要的表和一个映射表 我创建了一个名为实体、关键字(我知道命名不正确,但这不是我的项目,我只做优化)的类(如果你愿意,我可以显示我的类) 我使用hibernate版本4.3.4 我这样写查询: session = HibernateUtil.getSessionFactory().openSession(); String sql = "SELECT DISTINCT r FROM
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();
当我尝试执行此查询时,会收到以下错误:
java.sql.SQLException:ORA-00936:缺少表达式
当我把这个查询复制到OracleDevepoler时,他不喜欢这个表达式“和.=。”。如果没有该查询,则执行正确
我做错了什么?我认为正确的查询可能是
select distinct e.rules from Entities where e.entityId in :entities
如果关键字是联接表,并且实体中有一组规则,则会出现这种情况
如果不是,请显示映射,这可能会有所帮助。也许您在查询中使用了坏连接?根据上下文,我得出结论,您应该使用以下内容:
"SELECT DISTINCT r FROM Rules r inner join r.entities e " +
" WHERE e IN :entities ";
"SELECT DISTINCT r FROM Rules r inner join r.entities e " +
" WHERE e IN :entities ";