Hibernate @Where子句

时间:2014-06-23 19:00:08

标签: java sql hibernate jdbc

我有User类,它有组。

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

但是当我试图在已经存储在DB中的Group进行某些操作并且不适合@Where子句时,Hibernate只是忽略了我。

实际上,@Where不是我的决定,但我能找到解决这个问题的解决方案(创建另一个dao方法来执行某些操作)是如此丑陋。

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

2 个答案:

答案 0 :(得分:3)

根据enableddeleted字段的类型,您必须以其他形式编写@Where子句。

如果您的字段是数字:

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

如果您的字段是字符串:

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

如果您的字段是布尔值:

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

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

答案 1 :(得分:0)

与桌子一起使用

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