Accessing JPA Data with RESTの例を、Person
エンティティにアドレスリストを追加して拡張したいと考えました。Spring JPA REST One to Many
@Entity
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String firstName;
private String lastName;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private List<Address> addresses = new ArrayList<>();
// get and set methods...
}
Address
クラスは非常にシンプルなものです::だから、私は@OneToMany
アノテーションでリストaddresses
を追加
@Entity
public class Address {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String street;
private String number;
// get and set methods...
}
そして最後に、私はAddressRepository
インタフェースを追加しました:その後
public interface AddressRepository extends PagingAndSortingRepository<Address, Long> {}
を私はいくつかのアドレスで人をPOSTしようとしました:
私が手curl -i -X POST -H "Content-Type:application/json" -d '{ "firstName" : "Frodo", "lastName" : "Baggins", "addresses": [{"street": "somewhere", "number": 1},{"street": "anywhere", "number": 0}]}' http://localhost:8080/people
エラーは次のとおりです。
Could not read document: Failed to convert from type [java.net.URI] to type [ws.model.Address] for value 'street';
nested exception is java.lang.IllegalArgumentException: Cannot resolve URI street. Is it local or remote? Only local URIs are resolvable. (through reference chain: ws.model.Person[\"addresses\"]->java.util.ArrayList[1]);
nested exception is com.fasterxml.jackson.databind.JsonMappingException: Failed to convert from type [java.net.URI] to type [ws.model.Address] for value 'street'; nested exception is java.lang.IllegalArgumentException: Cannot resolve URI street. Is it local or remote? Only local URIs are resolvable. (through reference chain: ws.model.Person[\"addresses\"]->java.util.ArrayList[1])
多くの関係に多くの、多くのものを作成して、JSONオブジェクトを投稿する適切な方法はどれ?
ORMのエンティティクラスは表示されていますが、RESTに注釈が付けられているものは表示されていません。 – scottb
カスタムコンバーターを使用した提案の回答を見るhttp://stackoverflow.com/questions/24781516/spring-data-rest-field-converter – dseibert
@scottb両方のリポジトリのチュートリアルのように '@ RepositoryRestResource'アノテーションを使用します人、住所)。これにより、エンティティの共通RESTエンドポイントが作成されます。 –