将 SQL 转换为 HQL where 子句

发布于 2024-11-02 05:04:23 字数 410 浏览 1 评论 0原文

这应该很容易,但我的应用程序不断抛出错误,而且我是 Hibernate 的新手。

我正在尝试使用 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 查询帮助

问候 亚历克斯

this should be easy, but my app throws constant error, and I'm new to Hibernate.

I am trying to have simple HQL query in my web app using Hibernate.

I want to execute the following SQL query:

SELECT * FROM deal WHERE deal_status='A' OR WHERE deal_status='O';

HQL does not seem to work with or clause, here my current HQL statements in my web app:

FROM deal d where d.deal_status='O' or d.deal_status='A' order by d.id

Thanks for any Hibernate query help

Regards
Alex

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

岛歌少女 2024-11-09 05:04:23
  • HQL 基于您的实体的字段名称,而不是您的类的字段名称,并且类名称
  • c.id - c 未定义

我强烈假设 Deal 中的字段(类名首字母大写) ) 不是 deal_status 而是 status,那么查询一定是这样的。 (我跳过了 c.id 的内容,因为我不知道你的意思。)

 SELECT d FROM Deal d WHERE d.status='O' or d.status=`A`

注意 Deal 中的上部 D

这只有在 Deal.status 是字符串或类似的东西时才有效,但如果它是枚举则不然。处理 Enum 的一种方法是:

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);
  • The HQL is based on the name of fields of your entity not of your class, and the Class Names
  • c.id - c is not defined

I strongly assume that the fields in Deal (Classname first letter upper case) are not deal_status but status, then the query must be like this. (I skipped the c.id stuff, because I have no idea what you mean by this.)

 SELECT d FROM Deal d WHERE d.status='O' or d.status=`A`

Notice the upper D from Deal

And this will only work if Deal.status is a String or something like that, but not if it is a Enum. One way to handle an Enum is this:

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);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文