看过《深入浅出Hibernate》的人想必对这个例子都非常熟悉
 Criteria criteria = session.createCriteria(TUser.class);

 criteria.add(Expression.eq("name","Erica"));
 criteria.add(Expression.eq("sex",new Integer(1))); 


Expression.eq(String arg1, Object arg2) 就等价于 SQL中的“field = value”。

note:
但是实际上arg1代表的是class TUser 中的property - name 而不是数据库表T_User中的
filed - name

由于在用简单属性查询时,有时候根本意识不到自己现在操作对象的是属性还是DB中的域,
下面用一个更明显例子:
User.java
class User {
 private String name;
 private String id;
 private Integer age;
 /*一下略去 getter setter*/
}

Computer.java
class Computer{
 String id;
 String name;
 User owner;
/*getter setter 略去*/
}


一个User 对象可以拥有 多台 Computer,这样就形成了 many-to-one 结构。
在T_COMPUTER中用一个域 OWNER_ID记住 机主的ID。

如果要查询一个User对象用有的所有电脑时,
使用表达式 Expression.eq("owner" owner)
而不是 Expression.eq("OWNER_ID", owner.getId());
这就印证了上面的说法


Restrictions应该也是类似的。
评论
发表评论

提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则

您还没有登录,请登录后发表评论

NicholasBugs
搜索本博客
最近访客
最近加入圈子
存档
最新评论