Java 将SQL转换为HQL where子句
这应该很容易,但我的应用程序经常出错,而且我还不熟悉休眠 我正在尝试使用Hibernate在我的web应用程序中进行简单的HQL查询 我要执行以下SQL查询:Java 将SQL转换为HQL where子句,java,mysql,hibernate,hql,Java,Mysql,Hibernate,Hql,这应该很容易,但我的应用程序经常出错,而且我还不熟悉休眠 我正在尝试使用Hibernate在我的web应用程序中进行简单的HQL查询 我要执行以下SQL查询: SELECT * FROM deal WHERE deal_status='A' OR WHERE deal_status='O'; HQL似乎不适用于or子句,以下是我的web应用程序中当前的HQL语句: FROM deal d where d.deal_status='O' or d.deal_status='A' order by
SELECT * FROM deal WHERE deal_status='A' OR WHERE deal_status='O';
HQL似乎不适用于or子句,以下是我的web应用程序中当前的HQL语句:
FROM deal d where d.deal_status='O' or d.deal_status='A' order by d.id
感谢您提供的所有Hibernate查询帮助
问候
亚历克斯
c.id
-c未定义Deal\u status
而是status,那么查询必须如下所示。(我跳过了c.id的内容,因为我不知道你这是什么意思。)
请注意上面的D
只有当Deal.status是一个字符串或类似的东西时,这才起作用,但如果它是一个枚举,则不起作用。处理枚举的一种方法是:
Query query = session.createQuery(
"SELECT d FROM Deal d WHERE d.status=:o or d.status=:a");
query.setParameter("a", MyEnum.A);
query.setParameter("o", MyEnum.O);
发布您的错误异常,您知道HQL基于您的实体类,而不是您的DB模式吗?您的SQL中有一个语法错误:您必须只写一个,这是我愚蠢的问题,thx jishi!!如何处理枚举类型??因为它是一个!!nl.strohalm.cyclos.entities.coupon.coupon$DealStatus@Alexander Grosse:参见我的扩展答案
Query query = session.createQuery(
"SELECT d FROM Deal d WHERE d.status=:o or d.status=:a");
query.setParameter("a", MyEnum.A);
query.setParameter("o", MyEnum.O);