如何在序列化之前实例化LAZY关系?

时间:2015-04-12 05:21:29

标签: java mysql database netbeans eclipselink

我刚创建并加入了3个新表。在创建它们之前,一切都很好,所以我确实认为根本原因来自于它们的创造。现在,当在浏览器中运行时,我收到此错误:

  

org.apache.jasper.JasperException:Exception [EclipseLink-7242]   (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd):   的 org.eclipse.persistence.exceptions.ValidationException       异常描述:尝试使用具有空会话的间接遍历关系。经常这样   当具有未实例化的LAZY关系的实体是   序列化和之后的遍历关系   序列化。要避免此问题,请实例化LAZY关系   在序列化之前。

如何在序列化之前实例化LAZY关系?我一直在寻找网络,但我仍然没有找到真正有效的解决方案......

我还收到了其他错误消息:

  

异常[EclipseLink-4002](Eclipse持久性服务 -   2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.DatabaseException

     

内部异常: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:   未知栏' t1.rating'在'字段列表'错误代码:1054电话:   SELECT t1.id,t1.description,t1.last_update,t1.name,t1.price,   t1.rating FROM category_has_product t0,product t1 WHERE   ((t0.category_id =?)AND(t1.id = t0.product_id))bind => [1   参数bound]查询:ReadAllQuery(name =" productCollection"   referenceClass = Product sql =" SELECT t1.id,t1.description,   t1.last_update,t1.name,t1.price,t1.rating FROM category_has_product   t0,产品t1 WHERE((t0.category_id =?)AND(t1.id =   t0.product_id))&#34)

     

根本原因

     

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:Unknown   专栏' t1.rating'在'字段列表'

所有这些错误意味着什么?我不明白,因为所有的列和行都完美地映射了...它说它找不到某些列...我已经反复检查了所有的表格而且我真的没有&#39我明白什么可能是错的......一切似乎都很好......一点帮助将非常感激!感谢

除此之外,我还使用了以下内容: Netbeans的 Glassfish的 Mysql的 jsp中的大多数页面

1 个答案:

答案 0 :(得分:5)

实例化延迟引用的问题是众所周知的,所以我将提供一个链接而不是自己解释:http://en.wikibooks.org/wiki/Java_Persistence/Relationships#Serialization.2C_and_Detaching

Wiki页面还有3个解决方案来解决问题。但我会为您提供另一种解决方案,可能适合您的情况:JSP使用。

检查http://java.dzone.com/articles/open-session-view-design(或只是google查看“在视图中打开会话”。很多网页都是指Hibernate,但它也适用于Eclipselink)。解决方案是servlet过滤器中的开始和结束事务。该交易将涵盖整个请求处理。在您的情况下,JSP页面生成将在事务内,并且惰性引用将起作用。好处是您不必修改代码。

我不知道你的第二个映射问题