hibernate使用ajax向后台获取数据

这里是Struts2加hibernate写的,用的是 ObjectMapper mapper = new ObjectMapper(); 把数据传向前台,我这里写是树形菜单

$(function () { 
    $.ajax({
        type: "post",
        url: "/CRM/sy/rightAction_all.action",
        dataType: "json",
        data: {
        	right_code: "0",
            d: new Date()
        }, async: false,
        success : function(data) { 
			console.log(data); 
		} 
    });
})
package com.zking.web;
 
import java.sql.DriverAction;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.opensymphony.xwork2.ModelDriven;
import com.zking.biz.IRightBiz;
import com.zking.biz.impl.RightBizImpl; 
import com.zking.entity.Right; 
import com.zking.util.PageBean;

public class RightAction extends BaseAction  implements ModelDriven<Right>{
	private IRightBiz irb = new RightBizImpl();
	private Right right = new Right();
	private PageBean pageBean = new PageBean();
	private ObjectMapper mapper = new ObjectMapper();
	@Override
	public Right getModel() {
		return right;
	} 

	public String all() throws  Exception {  
		List<Right> list=irb.all(right);
		List<Map<String, Object>> maplist = new ArrayList<>();
		for (Right right : list) {
			Map<String, Object> item = new HashMap<>(); 
			item.put("id", right.getRight_code());
			item.put("name", right.getRight_text());
			item.put("spread", "true"); 
			List<Map<String, Object>> r = new ArrayList<>();
			Set<Right> st=right.getChildren();
			for (Right t : st) {
				Map<String, Object> item2 = new HashMap<>();
				item2.put("id", t.getRight_code());
				item2.put("name", t.getRight_text());
				item2.put("children", t.getChildren());
				item2.put("url", t.getRight_url()); 
				item2.put("spread", "true");  
				List<Map<String, Object>> s1 = new ArrayList<>();
				Set<Right> st2=t.getChildren();
				for (Right t2 : st2) {
					Map<String, Object> item3 = new HashMap<>();
					item3.put("id", t2.getRight_code());
					item3.put("name", t2.getRight_text());
					item3.put("children", t2.getChildren());
					item3.put("url", t2.getRight_url()); 
					item3.put("spread", "true"); 
					s1.add(item3); 
				}
				item2.put("children", s1);
				r.add(item2);
				item.put("children", r);
			}
			maplist.add(item);
		} 
		Map<String, Object> map = new HashMap<>();
		map.put("rows", maplist);
		mapper.writeValue(response.getOutputStream(), map); 
		return null;
	}
 
}

上面如果直接把返回的list集合放入mapper里会出现com.fasterxml.jackson.databind.JsonMappingException: could not initialize proxy [com.zking.entity.Right#] - no Session (through reference chain: java.util.HashMap[“rows”]->java.util.ArrayList[0]->com.zking.entity.Right[“right”]->com.zking.entity.Right H i b e r n a t e P r o x y HibernateProxy HibernateProxykXA9B1wn[“right_type”])的问题,
具体怎么解决呢?唔也不知

这里是dao方法,Right是实体类

public List all(Right right) {
		Session session = SessionFactoryUtil.getSession();
		Transaction transaction = session.beginTransaction();
		String sql = "from Right where  1=1 ";
		if (StringUtils.isNotBlank(right.getRight_code())) {
			sql += " and right_code = '" + right.getRight_code() + "' ";
		}
		List<Right> list = session.createQuery(sql).list(); 
		transaction.commit();
		session.close();
		return list;
	}

这里是配置文件,用了一对多,多对一的关系,还有懒加载

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
	<class name="com.zking.entity.Right" table="sys_right">
	<!--ID-->
		<id name="right_code" type="java.lang.String" column="right_code">
			<!-- 程序员自己控制:assigned,数据库自己控制:identity(标识列、自动增长列)sequence -->
			<!-- hibernate控制:increment uuid/uuid.hex -->
			<generator class="uuid"></generator>
		</id> 
		<property name="right_type" type="java.lang.String"
			column="right_type"></property>
		<property name="right_text" type="java.lang.String"
			column="right_text"></property>
		<property name="right_url" type="java.lang.String"
			column="right_url"></property>
		<property name="right_tip" type="java.lang.String"
			column="right_tip"></property>

		<!-- 当前节点与父节点是多对一的关系 -->
		<!--right_parent_code :父ID-->
		<many-to-one name="right"
			class="com.zking.entity.Right" column="right_parent_code"></many-to-one>
		<!-- 当前节点与父节点是一对多的关系  不懒加载lazy="false"  -->
		<set name="children"  lazy="false"   >
			<key column="right_parent_code"></key>
			<one-to-many class="com.zking.entity.Right" />
		</set>

	</class>
</hibernate-mapping>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值