我正在使用 Rest-services 和 JPA 编写的 java 启动 HTML5-client-server 应用程序。我遇到了如何实现服务器端的问题。想象一下你有对象的情况
public class User {
private String firstName = "";
private String surName = "";
private Address address = "";
}
public class Address {
private long id = 0L;
private String sAddress ="";
}
这是创建/删除/更新数据库时同时使用休息服务和控制器的最终实体。
现在我尝试将一个新用户从 ui(使用 jquery 和 ajax)插入 DB,并且我已经填充了 JSON 对象。但是在用户对象中有那个地址对象。有什么方法可以实现/使用它,或者我应该创建新的 pojo,其中只有基本类型,然后是一个新层,我在其中填充最终的 JPA 实体,如带有地址对象的用户?我希望我的英语足够好来解释这个问题。
- 这是创建一个数据(JPA 实体)与 Web 服务层和客户端层中的对象完全相似的应用程序的好主意吗?
- 知道如何实现吗?
- 甚至可以在休息服务中使用自己的对象类型 - HTML5(JSON)组合甚至一般?
您可以使用 Netbeans 7.3 轻松创建此类问题/应用程序。首先创建一个包含两个表的数据库,创建一个项目并从数据库生成 Web 服务,就是这样。现在你已经有了实体、带有外观的 Web 服务、数据库和项目。
我之前用示例代码问过这个问题,但没有答案: https ://stackoverflow.com/questions/14936031/mapping-and-parsing-json-objects-in-ui-and-in-java
并出现这样的错误:
WARNING: StandardWrapperValve[ServletAdaptor]: PWC1406: Servlet.service() for servlet ServletAdaptor threw exception
org.codehaus.jackson.map.JsonMappingException: Can not instantiate value of type [simple type, class entity.Address] from JSON String; no single-String constructor/factory method (through reference chain: entity.User["addressAddressId"])
at org.codehaus.jackson.map.deser.std.StdValueInstantiator._createFromStringFallbacks(StdValueInstantiator.java:379)
at org.codehaus.jackson.map.deser.std.StdValueInstantiator.createFromString(StdValueInstantiator.java:268)