我有User类,它有组。
@Where(clause = "enabled = 1 and deleted = 0")
@Fetch(FetchMode.SUBSELECT)
public Set<Group> getGroups() {
return groups;
}
但是当我试图在已经存储在DB中的Group
进行某些操作并且不适合@Where
子句时,Hibernate只是忽略了我。
实际上,@Where
不是我的决定,但我能找到解决这个问题的解决方案(创建另一个dao方法来执行某些操作)是如此丑陋。
那么,有没有办法克服这个问题?还是我错过了什么?谢谢你的帮助。
答案 0 :(得分:3)
根据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
。
答案 1 :(得分:0)
与桌子一起使用
@Where(clause = "enabled = true") @Table(name= "user") public class User {}