매핑 된 클래스 REST Repository를 내보낼 때 Spring-Data REST를 사용하여 OneToMany 관계에 객체를 추가하는 방법을 알 수 없습니다.Spring 데이터를 사용하여 OneToMany 관계에 객체를 추가하는 방법 REST
두 클래스, Question
및 Answer
이 있습니다.
@OneToMany(mappedBy = "answer", cascade=CascadeType.ALL, orphanRemoval = true)
@LazyCollection(LazyCollectionOption.FALSE)
private List<Answer> answers = new LinkedList<Answer>();
그리고 Answer
이 같은 Question
다시 매핑 : Question
는 다음과 같이 정의 된 멤버 변수가
@NotNull
@ManyToOne(targetEntity = Question.class)
@JoinColumn(name = "question_id", referencedColumnName = "id")
private Question question;
Answer
때문에 객체가 속한 Question
에만 관련된를, 나는 장애인 수출을했습니다 REST 저장소 :
@RestResource(exported = false)
public interface AnswerRepository extends JpaRepository<Answer, Long> {}
여기에서 질문을 가져올 때 : http://localhost:9090/data/questions/7
, 다음과 같이 표시됩니다.
{
"creationDate": "2014-09-26T06:36:44.000+0000",
"modificationDate": "2014-09-26T06:36:44.000+0000",
"answers": [],
"_links": {
"self": {
"href": "http://localhost:9090/data/questions/7"
}
}
}
지금까지는 그렇게 좋았습니다. 지금은 같은 대답을 추가 할 : StackOverflow에 대한 간단한 검색 위의 오류가 컬렉션을 교체로 인해 발생 나타냅니다
A collection with cascade=\"all-delete-orphan\" was no longer referenced by the owning entity instance: com.example.Question.answers
:
curl -v -X PUT -H "Content-Type: application/json" \
-d "{"answers": [{"value": "Red"}]}" http://localhost:9090/data/questions/7
불행하게도,이 시점에서 나는 다음과 같은 오류가 다른 하나는 이전 컬렉션을 고아로 만듭니다. 이 코드는 모두 Spring에서 관리하므로이 문제를 피하기 위해 객체를 조작하는 방법을 알지 못합니다.
This question과 비슷하지만 차이점은이 경우 리포지토리가 내보내지지 않는다는 것입니다.
http : // localhost : 9090/data/questions/7/answers에 대한 POST를 처리하기 위해 사용자 정의 컨트롤러를 작성하여이 문제를 해결했습니다. 이 질문에 대한 대답. – JBCP
자체 컨트롤러를 구현할 필요는 없습니다. 귀하의 명령은 대답을 추가하지 않습니다. – zeroflagL
나는 그것이 필요하지 않아야한다는 데 동의하지만 다른 해결책이 없습니다. 내 의견에 대답이 추가되지 않는다는 뜻입니까? 그 질문에 대한 대답이라고 생각하지 않기 때문입니다. – JBCP