Hibernate报错:could not initialize proxy -no session以及 one-to-many配置

来源:互联网 发布:淘宝运费险怎么赔付25 编辑:程序博客网 时间:2024/06/05 01:17

两个pojo 类,以及配置

HanBlog_Class.java

package HanBlog.Model.POJO;import java.util.Set;/***** * 博客分类 POJO * ********/public class HanBlog_Class {private int id;private int uid;private String name;private String introduction;private Set<HanBlog_Article> articles;//|关联public HanBlog_Class() {}public int getId() {return id;}public void setId(int id) {this.id = id;}public int getUid() {return uid;}public void setUid(int uid) {this.uid = uid;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getIntroduction() {return introduction;}public void setIntroduction(String introduction) {this.introduction = introduction;}public Set<HanBlog_Article> getArticles() {return articles;}public void setArticles(Set<HanBlog_Article> articles) {this.articles = articles;}}

HanBlog_Article.java

package HanBlog.Model.POJO;import java.util.Date;/****************** * 博客文章 POJO类 *  * ****************/public class HanBlog_Article {private int id;private int uid;private int classid;private String title;private String description;private String detail;private Date datetime;private int readtimes;public HanBlog_Article() {}public int getId() {return id;}public void setId(int id) {this.id = id;}public int getUid() {return uid;}public void setUid(int uid) {this.uid = uid;}public int getClassid() {return classid;}public void setClassid(int classid) {this.classid = classid;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getDescription() {return description;}public void setDescription(String description) {this.description = description;}public String getDetail() {return detail;}public void setDetail(String detail) {this.detail = detail;}public Date getDatetime() {return datetime;}public void setDatetime(Date datetime) {this.datetime = datetime;}public int getReadtimes() {return readtimes;}public void setReadtimes(int readtimes) {this.readtimes = readtimes;}}

HanBlog_Class.hbm.xml

<?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="HanBlog.Model.POJO.HanBlog_Class" table="hanblog_class"><id name="id" column="id" type="integer"><generator class="native" /></id><property name="uid" column="uid" type="integer"></property><property name="name" column="name" type="string"></property><property name="introduction" column="introduction" type="string"></property><!-- 一对多 关联  重点 -->     <set name="articles" lazy="true" inverse="true" cascade="all">       <!--            name属性指定的是加载的1这一端的属性的名称           class属性指定加载哪一个持久化类           column属性指定的是按照哪一个外键加载该持久化类           (外部的那个类的指向本类的键)            返回的是 Set集合对象       -->            <key column="classid" />            <one-to-many class="HanBlog.Model.POJO.HanBlog_Article"/>        </set></class></hibernate-mapping>

下面是懒加载报错:

org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: HanBlog.Model.POJO.HanBlog_Class.articles, could not initialize proxy - no Sessionat org.hibernate.collection.internal.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:569)at org.hibernate.collection.internal.AbstractPersistentCollection.withTemporarySessionIfNeeded(AbstractPersistentCollection.java:188)at org.hibernate.collection.internal.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:548)at org.hibernate.collection.internal.AbstractPersistentCollection.read(AbstractPersistentCollection.java:126)at org.hibernate.collection.internal.PersistentSet.iterator(PersistentSet.java:180)at HanBlog.Junit.testClassDao.test1(testClassDao.java:19)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:497)at junit.framework.TestCase.runTest(TestCase.java:176)at junit.framework.TestCase.runBare(TestCase.java:141)at junit.framework.TestResult$1.protect(TestResult.java:122)at junit.framework.TestResult.runProtected(TestResult.java:142)at junit.framework.TestResult.run(TestResult.java:125)at junit.framework.TestCase.run(TestCase.java:129)at junit.framework.TestSuite.runTest(TestSuite.java:252)at junit.framework.TestSuite.run(TestSuite.java:247)at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:86)at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
把 lazy=true 改成 lazy=false;即可



0 0
原创粉丝点击