读书人

Hibernate的一个小疑点

发布时间: 2012-02-02 23:57:14 作者: rapoo

Hibernate的一个小问题
在Eclipse中使用Hibernate生成的方法:
public List findByExample(SysUser instance)
如果查询所有的记录,使用fincByExample(new SysUser())是不是可以,为什么我现在只能查询到一条记录,哪里需要设置吗?

再就是如果在这个表中我想查询属于一个范围的数据,比如这是用户表,我想列出管理员的或者普通用户的列表,如何设置这个条件(new SysUser())?如果不重新定义一个findByExample方法的话。

[解决办法]
findByExample(SysUser instance) 是查找 与对象instance 相同的数据项的,你new的 SysUser 什么都没有吧

想列出管理员的或者普通用户的列表的话 HQL 语句 为 ” from 数据库表对应的 pojo 类名“ 执行后就都存到List 里了
[解决办法]
嗯,光new不行,还要给属性赋值
[解决办法]
HQL语句怎么写的 就能查到多少啊
同一个方法 还想返回不同的结果??
还不像重写方法??
那你就参数上做文章
[解决办法]
2,3L的说的比较全了

[解决办法]
恩同意啊
[解决办法]
比如这是用户表,我想列出管理员的或者普通用户的列表
你可以用内连接,子查询:仅供参考,呵呵,我学的也不好
// 内连接
String hql = "from Customer c left join fetch c.orderinfos";

// 返回的两个表的数据,返回的是对象数组,object[0]:customer object[1]:orderinfo对象
List<Customer> data = session.createQuery(hql).list();
for (Customer cus : data) {
System.out.println("------------------------");
System.out.println(cus.getCid() + " " + cus.getCname() + " ");

Set<Orderinfo> o = cus.getOrderinfos();

for (Orderinfo order : o) {
System.out.println(order.getOid() + " "
+ order.getOdate().toLocaleString());
}

}
util.HibernateSessionFactory.closeSession();
}

// 子查询
public void query13() {
Session session = util.HibernateSessionFactory.getSession();
// 内连接
//String hql = "from Customer c where c.cid not in (select o.customer.cid from Orderinfo o )";
//String hql = "from Customer c where c not in (select o.customer from Orderinfo o )";
String hql = "from Customer c where not exists (from c.orderinfos)";

// 返回的两个表的数据,返回的是对象数组,object[0]:customer object[1]:orderinfo对象
List<Customer> data = session.createQuery(hql).list();
for (Customer c : data) {
System.out.println(c.getCid()+" "+c.getCname());
}
util.HibernateSessionFactory.closeSession();
}

[解决办法]
前几天好像做过,这里只有Hibernate框架,你的那个应该跟别的spring,struts结合了吧,因为刚学框架,不懂那么多,呵呵
public void queryOne() {
Session session = util.HibernateSessionFactory.getSession();
Transaction tran = session.beginTransaction();
ClassInfo cla = (ClassInfo) session.get(ClassInfo.class, 5);
System.out.println(cla.getCname()+" "+cla.getCid());
System.out.println("学生信息");
Set set = cla.getStuset();
Iterator itor = set.iterator();
while(itor.hasNext()){
StuInfo s = (StuInfo)itor.next();
System.out.println(s.getSid()+" "+s.getSname()+" "+s.getSindate().toLocaleString());
}

//lazy=true:班级中的学生信息在查询班级的时候不会查询出来,
//只有当使用到学生的时候就会从session中查询出来
//lazy = false:班级中的学生信息在查询班级的时候会查询出来
util.HibernateSessionFactory.closeSession();
}

[解决办法]
nutz开源框架比hibernate好用,可以先看看

读书人网 >Eclipse开发

热点推荐