【问题标题】:Hibernate @Where clause休眠@Where 子句
【发布时间】:2014-08-13 22:23:05
【问题描述】:

我有用户类,它有组。

    @Where(clause = "enabled = 1 and deleted = 0")
    @Fetch(FetchMode.SUBSELECT)
    public Set<Group> getGroups() {
        return groups;
    }

但是当我尝试对已经存储在 DB 中且不适合 @Where 子句的 Group 进行一些操作时,Hibernate 会忽略我。

实际上,@Where 不是我的决定,但我可以找到克服这个问题的解决方案(创建另一个 dao 方法来执行某些操作)太难看了。

那么,有没有办法克服这个问题?还是我错过了什么?感谢您的帮助。

【问题讨论】:

  • 您可能希望使用 Criteria API 或命名查询作为替代方案。
  • 请准确描述您的问题。显示您正在执行的代码,告诉我们您希望它做什么,并告诉我们它会做什么。

标签: java sql hibernate jdbc


【解决方案1】:

根据enabled 和deleted 字段的类型,您必须以不同的形式编写@Where 子句。

如果您的字段是数字:

@Where(clause = "enabled = 1 and deleted = 0")

如果你的字段是字符串:

@Where(clause = "enabled = '1' and deleted = '0'")

如果您的字段是布尔值:

@Where(clause = "enabled = true and deleted = false")

检查您的类型(在您的 Java 类和数据库中)并以正确的方式使用您的 @Where。

【讨论】:

    【解决方案2】:

    与表格一起使用

    @Where(clause = "enabled = true") @Table(name= "user") public class User {}

    【讨论】:

      猜你喜欢
      • 2017-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-21
      • 1970-01-01
      • 2020-06-20
      • 1970-01-01
      • 2011-09-15
      相关资源
      最近更新 更多