HQL语句查询问题

进击的灰熊 程序猿  2015-07-10 12:21:55
现在有三个表 Users、Userpic和Usercon,分别是用户、用户图片用户评论
Users的列有uid,loginName,loginPwd,nickName,email,headpic,phoneNumber
Userpic的列有Userpicid,Userid,Userpicdate,其中Userid是Users表的外键
Usercon的列有Userconid,Usercon,Userid,Picid,其中Userid是Users的外键,Picid是Userpic的外键
hbm.xml关系映射已经建立好,为Users对Userpic=一对多,Users对Usercon=一对多,Userpic对Usercon=一对多

我通过
public List<Users> findAll(){
String queryString="from Users ";
List<Users> ulist=this.getHibernateTemplate().find(queryString);
return ulist;
}

查出数据后转换成json显示
"users":[{"uid":2015000030,"headpic":"","phoneNumber":0,"userpics":[],"email":"","nickName":"123","usercons":[],"loginPwd":"123","loginName":"hy"}]

这个是图片和评论表上没有数据时查出来的,在Userpic上添加Userid后就报死循环错误了,怎么样用HQL不把Users里的Set userpis和usercons查出来保存到list,只要其他的?
...全文
211 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
晴天_ccc 2015-07-17
使用json支持包中的 JsonConfig config = new JsonConfig(); config.setExcludes(new String[]{"field1","field2"});//field1,field2是要过滤的属性 JSONArray jsonArray = JSONArrray.fromObject(list,config);//list是要转换为json的ArrayList集合
回复
进击的灰熊 2015-07-17
引用 5 楼 l745876299 的回复:
这是hibernate的懒加载的问题,为啥不换一种解决问题的方式呢,其实你可以把那HQL查询写成SQL查询,作为数据库的一个视图(个人理解也就是临时表的意思),再配置好视图对应的hibernate映射文件,这个跟实体类映射差不多的,这样就可以用HQL查询了。
也就是说数据库的外键等等都不变,把hibernate的一对多这些关系全部删除,直接用sql查询吗?
回复
坏坏小菜 2015-07-16
这是hibernate的懒加载的问题,为啥不换一种解决问题的方式呢,其实你可以把那HQL查询写成SQL查询,作为数据库的一个视图(个人理解也就是临时表的意思),再配置好视图对应的hibernate映射文件,这个跟实体类映射差不多的,这样就可以用HQL查询了。
回复
进击的灰熊 2015-07-13
换个简单的问法吧。。。 表A有aid,aname 表B有bid,bname 表C有cid,cname A对应多个B,A对应多个C,B对应多个C,然后该如何建立他们之间的关系,关系建立完后Hibernate中又如何单独查询每张表的所有数据,有需要时又如何联合查询?
回复
进击的灰熊 2015-07-13
引用 2 楼 LAUDUKANG 的回复:
json序列化之前,可以通过transient排除某些字段; 另外,hibernate反转出的实体类会默认使用懒加载@ManyToOne(fetch = FetchType.LAZY),Set集合一开始是没加载出来的,调用到时候就会从session继续加载,但很多时候seesion是已经closed了的,这时候使用gson/json序列化就会出错: java.lang.UnsupportedOperationException: Attempted to serialize java.lang.Class: org.hibernate.proxy.HibernateProxy. Forgot to register a type adapter?,推荐楼主看这篇文章:http://www.17jquery.com/html/54343.html
我现在不是解决json问题,而是Hibernate如何只查需要的属性,而不联合查询
回复
你可以用HQL部分查询,不过要有对应的构造方法! SELECT Users(xxx想要的字段) from Users...
回复
laudukang 2015-07-10
json序列化之前,可以通过transient排除某些字段; 另外,hibernate反转出的实体类会默认使用懒加载@ManyToOne(fetch = FetchType.LAZY),Set集合一开始是没加载出来的,调用到时候就会从session继续加载,但很多时候seesion是已经closed了的,这时候使用gson/json序列化就会出错: java.lang.UnsupportedOperationException: Attempted to serialize java.lang.Class: org.hibernate.proxy.HibernateProxy. Forgot to register a type adapter?,推荐楼主看这篇文章:http://www.17jquery.com/html/54343.html
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2015-07-10 12:21
社区公告
暂无公告