Java Hibernate生成错误SQL,如“quot;=”&引用;

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

我在OracleDB中有3个表,它们之间的关系是@ManyToMany。所以我有两个重要的表和一个映射表

我创建了一个名为实体、关键字(我知道命名不正确,但这不是我的项目,我只做优化)的类(如果你愿意,我可以显示我的类)

我使用hibernate版本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();
当我尝试执行此查询时,会收到以下错误: 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 ";