Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将SQL转换为HQL where子句_Java_Mysql_Hibernate_Hql - Fatal编程技术网

Java 将SQL转换为HQL where子句

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

这应该很容易,但我的应用程序经常出错,而且我还不熟悉休眠

我正在尝试使用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 d.id
感谢您提供的所有Hibernate查询帮助

问候 亚历克斯
  • HQL基于实体的字段名(而不是类的字段名)和类名
  • c.id
    -c未定义
  • 我强烈假设Deal(Classname首字母大写)中的字段不是
    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);