hibernate json 双向级联死循环错误

J2EE 码拜 9年前 (2015-11-02) 659次浏览
想获取的是地址信息,其中包括了省份、城市两个属性,用session.createQuery();查出的address数据直接有province和city表的信息,但是用JSONArray.fromObject(ListObj);
后就会报cycle的错误,死循环错,网上说是去掉不必要的属性,但是Addresses表中的province和city等外联属性我都是需要级联取出的,怎么办?或推荐下好的json工具吧,hibernate用json-lib很不好使。
//省份表
public class Province {
     private int id;
     private String name;
     
     private Set<City> cities = new HashSet<City>();

//市级表
public class City{
private int id;
private String name;
private Province province;
private Set<Area> areas = new HashSet<Area>();

//某人的地址表
public class Addresses {
private int id;
private Province province; //省份
        private City city;  //城市
        private Area area;  //地区

解决方案:40分
在实体里面  建立一个有参构造函数,

	public District(Integer id,String name) {
		this.id=id;
		this.name=name;
	}
	public Street(Integer id,String name) {
		this.id = id;
		this.name = name;
	}

查询的时候这样,。

	/**
	 * 获得所有的街道
	 */
	@SuppressWarnings("unchecked")
	public List<District> queryAll() {
		Session hs = null;
		List<District> listD = new ArrayList<District>();

		try {
			hs = HibernateSessionFactory.getSession();
			String hql = "SELECT new District(d.id,d.name) from District d";
			Query query = hs.createQuery(hql);

			List list = query.list();
			for (int i=0;i<list.size(); i++) {
				District district = (District)list.get(i);
				listD.add(district);
			}
		} catch (HibernateException e) {
			e.printStackTrace();
		} finally{
			hs.close();
		}
		return listD;
	}

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明hibernate json 双向级联死循环错误
喜欢 (0)
[1034331897@qq.com]
分享 (0)