Hibernate Expressions 表达式属性的含义

本文探讨了Hibernate中属性与数据库字段之间的映射关系,并通过具体示例解释了如何正确使用Expression.eq方法进行条件筛选。此外,还介绍了实体类与关联对象在查询时的注意事项。
看过《深入浅出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应该也是类似的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值