RESTサービスとJPAで書かれたJavaを使用して、HTML5クライアントサーバーアプリケーションを開始しています。サーバー側の実装方法に問題があります。あなたがオブジェクトを持っている状況を想像してください
public class User {
private String firstName = "";
private String surName = "";
private Address address = "";
}
public class Address {
private long id = 0L;
private String sAddress ="";
}
これは、db の作成/削除/更新時に残りのサービスとコントローラーの両方を使用する最終的なエンティティです。
ここで、(jquery と ajax を使用して) ui から新しいユーザーを DB に挿入しようとすると、JSON オブジェクトが取り込まれました。しかし、ユーザーオブジェクト内にそのアドレスオブジェクトがあります。それを実装/使用する方法はありますか、それとも基本型のみである新しい pojo を作成してから、User のような最終的な JPA エンティティに Address-object を設定する新しいレイヤーを作成する必要がありますか? 私の英語が問題を説明するのに十分であることを願っています。
- これは、データ (JPA エンティティ) が Web サービス層およびクライアント層のオブジェクトとまったく同じであるアプリケーションを作成することをお勧めしますか?
- それを実装する方法はありますか?
- HTML5(JSON)の組み合わせ、または一般的に、残りのサービスで独自のオブジェクトタイプを使用することさえ可能ですか?
Netbeans 7.3 では、そのような問題やアプリを簡単に作成できます。最初に 2 つのテーブルを持つ DB を作成し、プロジェクトを作成して DB から Web サービスを生成するだけです。これで、エンティティ、ファサード、データベース、およびプロジェクトを備えた Web サービスを取得できました。
以前にサンプルコードでこれを尋ねましたが、答えはありません: https://stackoverflow.com/questions/14936031/mapping-and-parsing-json-objects-in-ui-and-in-java
そして、次のようなERRORを返します。
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)