- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
尽管在堆栈跟踪本身中看到过滤器,但我似乎在 Spring/MVC 3.0/Hibernate 3.5 应用程序中随机获得以下 LazyInitializationException。关于我应该研究什么有什么想法吗?
07 Jun 2011 13:48:47,152 [ERROR] (http-3443-2) org.hibernate.LazyInitializationException: could not initialize proxy - no Session
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:86)
at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:140)
at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:190)
at com.test.Image_$$_javassist_18.getMyKey(Image_$$_javassist_18.java)
at com.test.AppTagHelper.getAssetUrl(AppTagHelper.java:66)
at sun.reflect.GeneratedMethodAccessor81.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.el.parser.AstFunction.getValue(AstFunction.java:110)
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:935)
at org.apache.jsp.WEB_002dINF.view.home_jsp._jspx_meth_c_005fout_005f2(home_jsp.java:1027)
at org.apache.jsp.WEB_002dINF.view.home_jsp._jspx_meth_c_005fwhen_005f1(home_jsp.java:1002)
at org.apache.jsp.WEB_002dINF.view.home_jsp._jspx_meth_c_005fchoose_005f1(home_jsp.java:969)
at org.apache.jsp.WEB_002dINF.view.home_jsp._jspx_meth_display_005fcolumn_005f0(home_jsp.java:867)
at org.apache.jsp.WEB_002dINF.view.home_jsp._jspService(home_jsp.java:214)
<<VARIOUS SPRING FILTERS>>
at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
来自 web.xml
:
<filter>
<filter-name>hibernateFilter</filter-name>
<filter-class>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
<init-param>
<param-name>sessionFactoryBeanName</param-name>
<param-value>sessionFactory</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>hibernateFilter</filter-name>
<url-pattern>*.html</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>hibernateFilter</filter-name>
<url-pattern>*.json</url-pattern>
</filter-mapping>
更新,添加SessionFactoryBean
的定义:
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean" depends-on="dataSource">
<property name="dataSource" ref="dataSource" />
<property name="packagesToScan" value="com.test.model" />
<property name="schemaUpdate" value="false" />
<property name="eventListeners">
<map>
<!-- Create -->
<entry key="pre-insert">
<ref local="hibernateCreateListener"/>
</entry>
<entry key="post-insert">
<ref local="hibernateRevisionListener"/>
</entry>
<!-- Update -->
<entry key="pre-update">
<ref local="hibernateUpdateListener"/>
</entry>
<entry key="post-update">
<ref local="hibernateRevisionListener"/>
</entry>
<entry key="post-delete">
<ref local="hibernateRevisionListener"/>
</entry>
<entry key="pre-collection-update">
<ref local="hibernateRevisionListener"/>
</entry>
<entry key="post-collection-recreate">
<ref local="hibernateRevisionListener"/>
</entry>
<entry key="pre-collection-remove">
<ref local="hibernateRevisionListener"/>
</entry>
</map>
</property>
<property name="entityInterceptor">
<ref bean="hibernateAuditInterceptor"/>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
<prop key="hibernate.default_schema">${app.databaseSchema}</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.format_sql">false</prop>
<prop key="hibernate.use_sql_comments">false</prop>
<prop key="hibernate.connection.oracle.jdbc.ReadTimeout">60000</prop>
<prop key="org.hibernate.envers.revisionTypeFieldName">REV_TYPE</prop>
<prop key="org.hibernate.envers.revisionFieldName">REV_ID</prop>
</props>
</property>
</bean>
最佳答案
我知道的两个最常见的导致过滤器打开的延迟加载异常的原因是在异常使 Hibernate session 无效后尝试访问某些内容,或者尝试访问某个字段实际上坐在 Web session 中并且没有附加。
public interface EntityService {
@Transactional
EntityA getA(Long id);
@Transactional
EntityB getB(Long id);
}
public class WebPageController {
public void handleGet(Long id1, Long id2) {
EntityA a = entityService.getA(id1);
try {
EntityB b = entityService.getB(id2);
} catch (Exception e) {
//print somthething
}
a.accessLazyField(); //will throw lazy load after getB throws exception
}
}
显然为了清楚起见省略了很多代码和注释 :)
@SessionAttributes("model")
public class WebPageController {
@ModelAttribute("model")
@RequestMapping(method=RequestMethod.GET)
public EntityA handleGet(Long id) {
return entityService.getA(id);
}
@RequestMapping(method=RequestMethod.POST)
public String handlePost(@ModelAttribute("model") EntityA a) {
a.accessLazyField(); //will throw lazy load if the field was not accessed during original page rendering
return "viewName";
}
}
关于java - LazyInitializationException 尽管有 OpenSessionInViewFilter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6268627/
我开始学习使用 Hibernate 来开发 Java 中的 Web 系统,但我在类的映射和使用方面遇到了一些问题。 我有两个表:tblusuario和tblperfilusuario,tblusuar
我正在开发一个部署在 Tomcat 上的 J2EE 服务器应用程序。我使用 Spring 源作为 MVC 框架,使用 Hibernate 作为 ORM 提供者。我的对象模型有很多惰性关系(根据请求获取
我在尝试访问 permissions 时遇到 LazyInitializationException我的 Collection User目的。异常信息: org.hibernate.LazyIniti
我在我们的生产网络服务器上收到以下错误: NHibernate.LazyInitializationException : Initializing[Domain.Entities.AudienceT
这是一个让我困惑的问题。我正在尝试实现基本的 Hibernate DAO 结构,但遇到了问题。 这是基本代码: int startingCount = sfdao.count(); sfdao.cre
我看到类似的问题已经发布过,但是标准建议的解决方案似乎不适用于我,我想了解原因。 我有一个非常活跃的Grails 2.2.5应用程序,而且我一直在调查涉及大量数据集的报告问题。所讨论的域类是Polic
嗨,我有使用 jhipster 4.2.0 的微服务应用程序这是我的资源类 import org.springframework.web.bind.annotation.*; import javax
我有一个 Patient 类,其中包含 Id 集合和文件夹集合。当我尝试单独保存文件夹时,由于患者的 id 集合,它会抛出 LazyInitializationException。 患者类别如下所示:
我正在使用 Hibernate 3.6.0 制作一个应用程序,但出现了 LazyInitializationException。我没能解决这个问题,所以我来这里寻求你的帮助。 这是堆栈跟踪: Exce
在将域对象从数据库转换为客户端的资源对象期间,我遇到延迟加载字段的问题。 Customer :使用惰性字段从数据库加载实体 FullCustomer :将发送给客户端的实体。 服务层: @Transa
我有一个问题。我在 grails 中有事务性服务: class MyService { static transactional = true Set getFurniture(Long
我有一些具有两种关系的模型: @Entity @Table(name = "data_model") public class DataModel { @Id @GeneratedVa
传统上,我们会尝试避免 LazyInitializationException。但是,我需要暂时允许它们被抛出。这是我想要做的伪代码: Session session = ...; Customer
我正在将 Hibernate 4 用于 Java 项目。 我有下一个包含两个实体的方案: Units *has many* Users 因此,单位拥有用户的外键(请参阅 table definitio
JPA session 在静态方法中的行为如何?我使用 Hibernate 从数据库中检索对象列表,然后使用 Guava 的静态 Lists.transform 方法对其进行转换,这会导致: org.
我有这样的 OmQcActivity 类: @Entity @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) @Table(name="OM_QC
我的代码运行良好,但出现异常。将调用一个操作方法,但是在方法调用完成后我得到了这个异常。 我尝试了网络上所有可用的选项,但似乎没有什么能真正帮到我。 12/14 23:30:17 INFO er.S
目前我有一个子实体有一个 @ManyToOne关联到它的父实体。之前的开发者已经将这个字段设置为 lazy="false"在 session 关闭时也可以随时获取父级,但我决定它应该是 lazy="t
此代码的目的是允许用户检查 ID;在这种情况下,它将是检查特定运动比赛的 ID,以便查看相关比赛及其详细信息。这样做的全部目的是通知用户,如果他们输入了错误的 ID,我只是想在 SOAP 请求中生成一
尝试从数据库获取某些对象时,我不断收到错误: org.hibernate.LazyInitializationException (LazyInitializationException.java:1
我是一名优秀的程序员,十分优秀!