LazyInitializationException:懒惰加载错误,用OpenSessioninView呗

解决方案 »

  1.   

    我觉得好象是你的那个private Set posts = new HashSet();这句话有问题吧,你把这个set集合给改一下看看
      

  2.   

    噢,试试1楼的.
    2楼的我也要试试,不过觉得应该不会啊,我在Board.java中也设置了 private Set topics = new HashSet();但不会出错,
     照理应 private Set posts = new HashSet(); 该不会错啊. 试试看.
      

  3.   

    package com.coolgo.domain.dao;import java.util.Date;
    import java.util.List;
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    import org.hibernate.LockMode;
    import org.hibernate.Query;
    import org.hibernate.criterion.Example;import com.coolgo.domain.model.Post;/**
     * A data access object (DAO) providing persistence and search support for Post
     * entities. Transaction control of the save(), update() and delete() operations
     * can directly support Spring container-managed transactions or they can be
     * augmented to handle user-managed Spring transactions. Each of these methods
     * provides additional information for how to configure it for the desired type
     * of transaction control.
     * 
     * @see com.coolgo.domain.model.Post
     * @author MyEclipse Persistence Tools
     */public class PostDAO extends BaseHibernateDAO {
    private static final Log log = LogFactory.getLog(PostDAO.class);
    // property constants
    public static final String POST_BOARDID = "postBoardid";
    public static final String POST_USER = "postUser";
    public static final String POST_TOPICID = "postTopicid";
    public static final String POST_REPLYID = "postReplyid";
    public static final String POST_CONTENT = "postContent";
    public static final String POST_IP = "postIp"; public void save(Post transientInstance) {
    log.debug("saving Post instance");
    try {
    getSession().save(transientInstance);
    log.debug("save successful");
    } catch (RuntimeException re) {
    log.error("save failed", re);
    throw re;
    }
    } public void delete(Post persistentInstance) {
    log.debug("deleting Post instance");
    try {
    getSession().delete(persistentInstance);
    log.debug("delete successful");
    } catch (RuntimeException re) {
    log.error("delete failed", re);
    throw re;
    }
    } public Post findById(java.lang.Integer id) {
    log.debug("getting Post instance with id: " + id);
    try {
    Post instance = (Post) getSession().get(
    "com.coolgo.domain.model.Post", id);
    return instance;
    } catch (RuntimeException re) {
    log.error("get failed", re);
    throw re;
    }
    } public List findByExample(Post instance) {
    log.debug("finding Post instance by example");
    try {
    List results = getSession().createCriteria(
    "com.coolgo.domain.model.Post").add(Example.create(instance))
    .list();
    log.debug("find by example successful, result size: "
    + results.size());
    return results;
    } catch (RuntimeException re) {
    log.error("find by example failed", re);
    throw re;
    }
    } public List findByProperty(String propertyName, Object value) {
    log.debug("finding Post instance with property: " + propertyName
    + ", value: " + value);
    try {
    String queryString = "from Post as model where model."
    + propertyName + "= ?";
    Query queryObject = getSession().createQuery(queryString);
    queryObject.setParameter(0, value);
    return queryObject.list();
    } catch (RuntimeException re) {
    log.error("find by property name failed", re);
    throw re;
    }
    } public List findByPostBoardid(Object postBoardid) {
    return findByProperty(POST_BOARDID, postBoardid);
    } public List findByPostUser(Object postUser) {
    return findByProperty(POST_USER, postUser);
    } public List findByPostTopicid(Object postTopicid) {
    return findByProperty(POST_TOPICID, postTopicid);
    } public List findByPostReplyid(Object postReplyid) {
    return findByProperty(POST_REPLYID, postReplyid);
    } public List findByPostContent(Object postContent) {
    return findByProperty(POST_CONTENT, postContent);
    } public List findByPostIp(Object postIp) {
    return findByProperty(POST_IP, postIp);
    } public List findAll() {
    log.debug("finding all Post instances");
    try {
    String queryString = "from Post";
    Query queryObject = getSession().createQuery(queryString);
    return queryObject.list();
    } catch (RuntimeException re) {
    log.error("find all failed", re);
    throw re;
    }
    } public Post merge(Post detachedInstance) {
    log.debug("merging Post instance");
    try {
    Post result = (Post) getSession().merge(detachedInstance);
    log.debug("merge successful");
    return result;
    } catch (RuntimeException re) {
    log.error("merge failed", re);
    throw re;
    }
    } public void attachDirty(Post instance) {
    log.debug("attaching dirty Post instance");
    try {
    getSession().saveOrUpdate(instance);
    log.debug("attach successful");
    } catch (RuntimeException re) {
    log.error("attach failed", re);
    throw re;
    }
    } public void attachClean(Post instance) {
    log.debug("attaching clean Post instance");
    try {
    getSession().lock(instance, LockMode.NONE);
    log.debug("attach successful");
    } catch (RuntimeException re) {
    log.error("attach failed", re);
    throw re;
    }
    }
    }
    是这个吗?