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

use*_*678 2 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 Persistence Services - 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 parameter bound] Query: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,product t1 WHERE((t0.category_id =?)AND(t1.id = t0.product_id))")

根本原因

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:'字段列表'中的未知列't1.rating'

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

此外,我使用以下应用程序:Netbeans Glassfish Mysql jsp中的大多数页面

mic*_*ldo 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页面生成将在事务内,并且惰性引用将起作用.好处是您不必修改代码.

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