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

时间:2018-03-05 09:36:50

标签: java hibernate gwt hibernate-mapping

hibernate POJO只允许 list (这是一个界面)来映射多对一关系。

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转换为可序列化的对象?

由于

1 个答案:

答案 0 :(得分:0)

您可以使用if($request->search_schedule_day != null) { $q->where(function($query)use($request) { // group orWheres for ($request->search_schedule_date as $day) { $query->orWhere('schedule_day', $day); } } } ,但生成的javascript会更大。

  

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

Full answer here

为GWT RPC创建一个可序列化的类:

  

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

Docu

你必须把这些东西添加到你的班级...... 另外,请确保List<Serializable>可序列化。

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