调用从客户端传递方法参数的会话 bean 方法时遇到问题
应用程序中,数据到达方法调用时始终为空或设置为默认值。
而该方法的过程与对象很好地配合
例如:
- 我们有方法来持久化一个对象实体 addStudent(Student student); - 从客户端我们创建学生对象设置学生字段,如学生姓名等,调用方法 addStudent(ourStudent); 这个 ourStudent 到达方法的字段为 null 或默认值。学生被添加到这些空字段中。
提前致谢。
调用从客户端传递方法参数的会话 bean 方法时遇到问题
应用程序中,数据到达方法调用时始终为空或设置为默认值。
而该方法的过程与对象很好地配合
例如:
- 我们有方法来持久化一个对象实体 addStudent(Student student); - 从客户端我们创建学生对象设置学生字段,如学生姓名等,调用方法 addStudent(ourStudent); 这个 ourStudent 到达方法的字段为 null 或默认值。学生被添加到这些空字段中。
提前致谢。
您将 EclipseLink 与编织一起使用,但它不起作用。你应该尝试不编织。可能通过编辑你的persistence.xml
(s)
<persistence-unit name="XXX" transaction-type="XXX">
<jta-data-source>XXX</jta-data-source>
<jar-file>Or List of Classes or something else</jar-file>
<properties>
[other properties]
<property name="eclipselink.weaving" value="false"/>
</properties>
</persistence-unit>
更新:JPA 实现可以通过多种替代方式处理实体,这是一个不厌其烦的列表:
EclipseLink 调用字节码注入“编织”(什么是 Java 字节码注入?)动态编织是在“运行时”进行编织 - 基本上是当类由类加载器加载时。静态编织是在部署之前进行编织,但在编译之后。对于 EclipseLink weaving 是最快的方法性能明智,它也是其他原因的首选方法。不幸的是,让编织工作通常有点棘手。完全有可能这对您的项目无关紧要,对于很多典型项目来说都无关紧要。
如果有客户端通过远程接口访问 bean,并且有实体作为参数传递或通过该连接返回值,则动态编织将不起作用。在大多数生产场景中,特别是如果应用程序/产品不是非常小,静态编织比动态编织更受欢迎......要阅读更多关于静态与动态编织以及如何配置它的信息,我还没有真正找到任何优秀的资源,但这至少是半官方的: Using_EclipseLink_JPA_Weaving
发生在你身上的是实体是在一端编织而不是在另一端编织 -> 绝对不能工作。
好消息是,您可能根本不必关心这些编织物,或者您可能会。当您禁用编织时,EclipseLink 会退回到另一种处理 JPA 实体的方法。EclipseLink 仅在启用编织时才支持某些功能(尽管不需要 JPA)。
来自:What_You_May_Need_to_Know_About_Weaving_JPA_Entities 列出了 EclipseLink 明确使用编织的内容:
(对于其中一些方法,如果禁用编织,则可以回退到其他方法,我猜除了“内部优化”之外的所有方法)