//部门bean
public class Dept{
private String id;
private String name;
@OneToMany(mappedBy="dept")
private Set<User> users = new HashSet<User>();
} //人员bean
public class User{
private String id;
@ManyToOne
private Dept dept;
} public static void main(String[] args) {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(
"applicationContext.xml");
DetachedCriteria criteria = DetachedCriteria.forClass(SystemUser.class);
// criteria.createAlias("dept", "d");
// criteria.add(Restrictions.eq("d.name", "12"));
criteria.add(Restrictions.eq("dept.name", "12"));
criteria.getExecutableCriteria(DBControl.getHibernateTemplate()
.getSessionFactory().openSession());
}请问我在使用hibernate, 比如一个user 实体里包含了一个dept的对象 我使用hql的时候 直接 "from User where dept.name like '%xx%'" 这个时候是可以查的.
但是在使用qbc的时候 我加入查询条件 criteria.add(Restrictions.eq("dept.name", "12")) 的时候
却说该属性不存在 ,可是我加入条件 criteria.add(Restrictions.eq("dept.id", "12"))的时候确不报错也是可以查的.也就是说使用qbc的时候,查关联对象,除了查询关联对象的主键可以查询到以外,查询其他的任何字段都得取了别名之后再来查询
criteria.createAlias("dept", "d");
criteria.add(Restrictions.eq("d.name", "12"));
这样就可以关联dept的其他属性.请问这是为什么呢?
hibernate 为什么要如此设计呢,直接和hql一样直接对象名.属性查出来不就可以了嘛?
求解释哈。
解决了人家鲍照.
hibernatejavaqbchql女
解决方案 »
- 如何快速的学习JAVA语言
- 如果想实现登录后,根据用户权限情况,用disable标签黑掉部分页面左边框中的菜单,应该怎么做?高手能不能提供一点思路?
- 麻烦各位看看,这个错误码一个是什么地方不当造成的?
- 我写了一个BEAN的,文件但是不知道是否出错了。希望大虾帮忙看看。100分等待中。。。
- 高手进,求实质性的解决方案SSH 提交问题
- tomcat超过一定时间不能连接mysql的问题,请高手指点
- 谁帮帮我?
- JSP+mm.mysql-2.0.14-bin.jar连接数据库的问题,紧急阿。谢谢
- 如果我想用jsp做一个网站,服务器该到哪去申请,去租用吗?域名怎么定?
- spring 配置 报错,请教各位大神
- 求看HQL语句 结果为什么没有limit这部分
- CipherOutputStream 转换问题
你也可以用Property.forName(),比如
Property age = Property.forName("age");
criteria.add(age.eq(new Integer(11)));