在本文中,我们将深入探讨与Glassfish 3.1.2.2中JPA问题相关的主题,特别是关于EclipseLink的更新方法。JPA(Java Persistence API)是Java平台上的一个标准,用于处理对象关系映射(ORM),使得开发者能够方便地在Java应用中操作数据库。EclipseLink是JPA的一个实现,它提供了丰富的功能和优化,但在某些情况下可能会出现特定的问题。 问题一:TcUser类中的company和其他字段没有被JPA注入值。 在financePortal应用中,当尝试通过JPA加载TcUser对象时,发现company和其他预期字段的值未被正确填充。这可能是由于JPA元数据未能正确识别或解析class路径下定义的TcUser类导致的。 问题二:TcUser类有多余的集合关系,但在JPA注入时没有值。 在david的车船监控应用中,遇到了类似的问题,即TcUser对象与其他对象的集合关系在JPA注入时没有被正确处理。这同样可能是由于JPA元数据的问题,或者与ClassLoader有关,导致JPA无法正确解析和建立这些关系。 问题推测: 从日志分析,感觉问题在于ClassLoader加载的对象是正确的,但是在JPA进行实体注入时出现了问题。JPA的元数据可能错误地指向了fc-model.jar中的tcUser.class,而不是class路径下的版本,因此生成的SQL查询可能缺少了相应的字段,进而导致运行时的NullPointerException(NPE)。 解决方法: Neo提供了一个解决方案,包括以下步骤: 1. 进入Glassfish安装目录下的modules文件夹。 2. 使用过滤器查找以"org.eclipse.persistence.*.jar"开头的文件。 3. 保存或删除找到的jar文件。 4. 下载最新版本的EclipseLink。在本文中,选择了2.4.2版本,尽管那时已经更新到了2.5版本。 5. 解压缩下载的EclipseLink包,并将其中的"org.eclipse.persistence.*.jar"文件复制到Glassfish的modules文件夹下。 6. 如果Glassfish正在运行,需要关闭并清理缓存。删除domain下的osgi-cache文件夹中的felix子文件夹内容。 7. 重启Glassfish服务器。 注意,不是所有旧的EclipseLink jar文件都需要替换,至少需要8个关键的jar文件。在测试后,发现只替换这些文件可能无法解决问题,因此建议将所有相关jar文件都复制过去。 EclipseLink 2.4.2的文件可以放在指定的网络共享位置,便于访问和部署。 总结来说,这些问题涉及到JPA的元数据解析、ClassLoader的行为以及EclipseLink的版本更新。通过更新EclipseLink的库文件,并清理服务器缓存,可以解决由JPA注入问题导致的运行时异常。对于开发和维护基于JPA的应用,理解这些问题的根源和解决方法至关重要,以确保应用程序的稳定性和数据的完整性。
- 粉丝: 32
- 资源: 293
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
评论0