将带有列表的hibernate POJO转换为可序列化的rpc返回对象

问题描述 投票:1回答:1

hibernate POJO只允许列表(一个接口)映射多对一关系。

public class Employee {
private int id;
private String firstName; 
private String lastName;   
private int salary;
private List certificates;

但GWT-RPC只允许具体类型(如ArrayList)作为返回。因此,不是仅为RPC定义具有ArrayList的类似类,

public class EmployeeRPC {
private int id;
private String firstName; 
private String lastName;   
private int salary;
private **ArrayList<Certificate>** certificates;

有没有其他方法将hibernate POJO转换为可序列化的对象?

谢谢

java hibernate gwt hibernate-mapping
1个回答
0
投票

你可以使用List<Serializable>但生成的javascript会更大。

在RPC调用中传递对象时,最好在RPC接口中声明具体的参数类型。如果由于某种原因您无法在RPC接口中使用具体类,请尝试尽可能具体。 这是因为GWT编译器在发出javascript时必须考虑编译单元中List的所有可能变体。这包括在类路径中扩展List和Serializable接口的所有类。排列可能很大,这将影响您的编译时间以及应用程序下载大小。

Full answer here

使类可序列化为GWT RPC:

如果类符合以下三个要求,则可以序列化: - 它直接实现Java Serializable或GWT IsSerializable接口,或者因为它派生自超类。 - 它的非最终非瞬态实例字段本身是可序列化的,并且 - 它有一个带有任何访问修饰符的默认(零参数)构造函数(例如私有Foo(){}将起作用)

Docu

你必须将这些东西添加到你的班级......同时确保Certificate是可序列化的。

或者只使用JSON:resty-gwtgwt-jackson

© www.soinside.com 2019 - 2024. All rights reserved.