나는 Question
라고 이름이 지어지는 클래스를 만들고있다. 이 클래스에는 답변이 있으므로 첨부 된 답변 목록을 반환 할 수 있기를 원합니다.불변의 목록을 되 돌리는 것
그러나 사용자가 답변을 변경하면 추가 검증 등을 할 수 있도록 사용자가 업데이트 방법을 호출하기를 원합니다. 지금 사용자가 답변 목록을 얻으면 그는 여전히 답변을 변경할 수 있습니다. 말하는 question.getAnswers().get(0).setDescription("BLAH BLAH").
그래서 나는 각 대답의 사본을 반환 생각하고 사용자가 이것을 변경하게하고 그는 다시 질문을 병합/업데이트해야합니다. 이 방법을 사용하면 대답은 유효하지만 JPA를 사용하기 때문에 description
및 correct
필드를 기반으로하고 id
필드가 아닌 equals 메서드를 기반으로합니다. 사용자가이 방법으로 답변을 변경하면 설명 필드가 변경되어 더 이상 같지 않아 업데이트 메소드가 답변을 찾지 못해 목록에서 해당 설명을 찾지 못합니다.
조언이 있으십니까?
public void updateAnswer(Answer answer) {
int index = answers.indexOf(answer);
answers.set(index, answer);
}
public List<Answer> getAnswers() {
return Collections.unmodifiableList(answers);
}
@Test
public void shouldUpdateAnswerInQuestion() {
// Get first answer, make an update on the description
// and then update answer on question.
Answer answerThatWillBeUpdated = question.getAnswers().get(0);
String updatedAnswerDescription = "Hey, it is now updated!";
answerThatWillBeUpdated.setDescription(updatedAnswerDescription);
question.updateAnswer(answerThatWillBeUpdated);
// After updating check that the answer in the list is equal
// to the answer updated.
Answer answerFromList = question.getAnswers().get(0);
assertEquals(answerThatWillBeUpdated, answerFromList);
}
대답 클래스 :
public class Answer {
private long id;
private String description;
private Boolean correct;
...
}
? 그는 정확히 무엇을 얻습니까? 그 답을 가지고 분리 된 질문입니까, 아니면 그 답을 첨부 한 질문입니까? 그리고 그는 대답이나 질문 및 답변 목록을 수정해야합니까? 서비스 레이어에서'updateAnswer (Answer a)'서비스를 가지고 계시지 않겠습니까? –
질문은 집합 루트 – LuckyLuke