相关疑难解决方法(0)

Hibernate无法同时获取多个行李

Hibernate在SessionFactory创建期间抛出此异常:

org.hibernate.loader.MultipleBagFetchException:无法同时获取多个行李

这是我的测试用例:

Parent.java

@Entity
public Parent {

 @Id
 @GeneratedValue(strategy=GenerationType.IDENTITY)
 private Long id;

 @OneToMany(mappedBy="parent", fetch=FetchType.EAGER)
 // @IndexColumn(name="INDEX_COL") if I had this the problem solve but I retrieve more children than I have, one child is null.
 private List<Child> children;

}
Run Code Online (Sandbox Code Playgroud)

Child.java

@Entity
public Child {

 @Id
 @GeneratedValue(strategy=GenerationType.IDENTITY)
 private Long id;

 @ManyToOne
 private Parent parent;

}
Run Code Online (Sandbox Code Playgroud)

这个问题怎么样?我能做什么?


编辑

好吧,我遇到的问题是另一个"父"实体在我父母的内部,我的真实行为是这样的:

Parent.java

@Entity
public Parent {

 @Id
 @GeneratedValue(strategy=GenerationType.IDENTITY)
 private Long id;

 @ManyToOne
 private AntoherParent anotherParent;

 @OneToMany(mappedBy="parent", fetch=FetchType.EAGER)
 private List<Child> children;

}
Run Code Online (Sandbox Code Playgroud)

AnotherParent.java

@Entity …
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa

428
推荐指数
8
解决办法
29万
查看次数

当数据正确显示时,为什么我在Spring MVC Web应用程序中获得Hibernate LazyInitializationException?

我正在尝试使用Spring MVC创建一个Web应用程序,将Hibernate作为其ORM层.但是,由于我对这两个框架缺乏经验,我正在努力.

以下代码将正确显示我正在查找的所有记录,但仍将堆栈跟踪放入我的日志中.我无法找到有关集成Hibernate和SpringMVC的详细文档(我查看了springsource.org并阅读了关于interweb的各种文章).谁能指出我在这里做错了什么?

请注意,我花了一些时间试图在互联网上找到答案,包括查看这个问题.遗憾的是没有帮助.

我还应该注意,此应用程序的ORM部分已在独立的Java应用程序中使用和测试,没有任何问题.所以我认为Spring MVC和Hibernate的集成导致了这个问题.

这是具有着名的延迟初始化问题的堆栈跟踪(截断);

2009-03-10 12:14:50,353 [http-8084-6] ERROR org.hibernate.LazyInitializationException.<init>(LazyInitializationException.java:19) - could not initialize proxy - no Session
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
    at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:57)
    at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:111)
    at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:150)
    at com.generic.orm.generated.SearchRule$$EnhancerByCGLIB$$92abaed6.toString(<generated>)
    at java.lang.String.valueOf(String.java:2827)
    at java.lang.StringBuffer.append(StringBuffer.java:219)
    at org.apache.commons.lang.builder.ToStringStyle.appendDetail(ToStringStyle.java:578)
    at org.apache.commons.lang.builder.ToStringStyle.appendInternal(ToStringStyle.java:542)
    at org.apache.commons.lang.builder.ToStringStyle.append(ToStringStyle.java:428)
    at org.apache.commons.lang.builder.ToStringBuilder.append(ToStringBuilder.java:840)
    at org.apache.commons.lang.builder.ReflectionToStringBuilder.appendFieldsIn(ReflectionToStringBuilder.java:606)
.....
Run Code Online (Sandbox Code Playgroud)

这是我的网页控制器的代码;

private List<Report> getReports() {
    Session session = HibernateUtil.getSessionFactory().getCurrentSession();
    session.beginTransaction();

    List<Report> reports = session.createCriteria(Report.class).list();
    Hibernate.initialize(reports);

    session.getTransaction().commit();
    return reports;
}
Run Code Online (Sandbox Code Playgroud)

使用此显示html在网页上使用哪个;

<table border="1">
    <c:forEach items="${model.reports}" var="report">
        <tr>
            <td><c:out …
Run Code Online (Sandbox Code Playgroud)

java spring netbeans hibernate web-applications

11
推荐指数
2
解决办法
5万
查看次数

标签 统计

hibernate ×2

java ×2

jpa ×1

netbeans ×1

spring ×1

web-applications ×1