hibernate中,怎么样同时查询多个表,连接查询

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hibernate中,怎么样同时查询多个表,连接查询相关的知识,希望对你有一定的参考价值。

现在又两个实体类,User和Category 同时数据库中有两个表t_user和 t_category
User类中字段:public class User
private String userID; //用户ID
private String username; //用户名
private String password; //用户密码
private String userclass; //用户类型:
private String email; //邮箱
private Date regdate; //注册日期:若不填则系统默认当前日期
private int usable;
Category 类中字段:
private String categoryID; // 版块ID
private String userID; // 版主ID
private String categoryName; // 版块名称
private String description; // 版块介绍
private int categoryNum; // 版块贴数 默认为0
private int hint; // 点击率 默认为0
private int usable;

而查询出的结果应该是 categoryName,description,userName,这个怎么解决???

hibernate都给你解决好了 说白点吧。 比如你有一个user表 还有一个user1表 (多对一(无所谓))里面有关联字段user_id ; 对应user1表 。 你要查两个表的一条数据 可以这样。
比如你一个findAll都查出来了 显示数据的时候(假如内个关联字段hibernate命名为users) : user.getusers().getusers(); 这样就能取到想要的数据 不论是一条还是一个list 同样 el表达式 在jsp页内也一样可以这么做 比如var的变量名叫temp 循环的时候 可以
$temp.users.users 这样就能取出你想要的数据 自己手打的 不管是不是你想要的 给个分吧、、追问

还是不太清楚,怎么findAll?还有怎么用 user.getusers().getusers(); 怎么用两个?

追答

findAll 是我举的例子 就是查询全部 user.getusers().getuser(); 这么说吧 前面的getusers()就是关联表的外键 后面内个getusers(); 是被关联表里对应的数据 只不过hibernate要从对象的角度考虑  这样说是不是明白了 假如你要在JSP页面显示数据

$temp.name
$temp.users.users 这不就是内个关联查询么 理解了没??

参考技术A 使用了多对多关联和hibernate,那么不管你从student表还是从teacher表添加,都会要把所有的teacher或者student查出来。
使用多对对,数据库表设计就有瑕疵,要提高效率,考虑下表设计。
参考技术B 把你的表结构和要查的结果说清楚才好回答

select u. userName, c. categoryName, c. description from User u, Category c where u.userID = c.userID and u.userID = ?
以上是hql语句查出来的结果是List<Object[]>
遍历以后Object[0]是userName,Object[1]是categoryName,Object[2]是description

还有,这种关联的类这么写是违背了hibernate初衷的,这样你就无法使用hibernate原本很方便的关联机制了,Category中的String userID应该写成User user;
只要查出一个对象,通过get方法就能得到另一个

以上是关于hibernate中,怎么样同时查询多个表,连接查询的主要内容,如果未能解决你的问题,请参考以下文章

hibernate 一对多 查询问题

MySQL增删改查之多表联合查询

hibernate怎么用查询

两个数据库表,怎么用java web实现增删改查

Hibernate里面表间有连接,查询一个表出org.hibernate.HibernateException: HHH000142: Javassist Enhancement failed: 表联

hibernate executeSQLQuery 查询多个表怎么返回值