在hibernate中加入和where子句

时间:2016-12-10 04:21:34

标签: java mysql hibernate

我在hibernate 3中使用了join和where子句但是我无法达到解决方案。我收到了错误。

Query qry= session.createQuery("SELECT addemployee.eid,addemployee.fname,addemployee.location,"
        + "empdet.jtitle,empdet.leadname FROM addemployee LEFT JOIN empdet ON addemployee.eid = empdet.eid WHERE (addemployee.eid ='"+id+"')");

        List l = qry.list();
        Iterator it=l.iterator();

        while(it.hasNext())
        {

            Object rows[] = (Object[])it.next();
            System.out.println(rows[0]+separator+rows[1]+separator+rows[2]+separator+rows[3]+separator+rows[4]);
        }

问题:org.hibernate.hql.ast.QuerySyntaxException:意外令牌:ON第1行第127列[SELECT addemployee.eid,addemployee.fname,addemployee.location,empdet.jtitle,empdet.leadname FROM addemployee LEFT JOIN empdet ON addemployee.eid = empdet.eid WHERE(addemployee.eid =' 206')]

2 个答案:

答案 0 :(得分:0)

Hibernate Session的createQuery()方法需要有效的HQL语法。您可以查看如何编写联接here。 基本上,在HQL中,您使用您的实体,而不是SQL表。因此,您不需要编写 ON ,因为您已经映射了实体之间的关联。

如果您仍想编写本机SQL查询,则需要使用 而是session.createSQLQuery();

答案 1 :(得分:0)

尝试改为使用session.createSQLQuery()

并且没有附上撇号(''),您输入的是numbers,而不是varchar

像这样。

Query qry= session.createSQLQuery("SELECT addemployee.eid,addemployee.fname,addemployee.location,"
    + "empdet.jtitle,empdet.leadname FROM addemployee LEFT JOIN empdet ON addemployee.eid = empdet.eid WHERE (addemployee.eid ="+id+")");