我的域类包含以下字段
private long id;
private String questionNo;
private byte[] question;
private byte[] option1;
private byte[] option2;
private byte[] option3;
private byte[] option4;
private String answer;
private byte[] explanation;
private Topic topic;
private Chapter chapter;
private Subject subject;
在我的控制器类中,我想验证每个字段的更改以便更新。
我已经尝试了
0 = 'success'
1='No Change'
2='Question No Already Exists'
public int validateQuestion(Question question){
Question questionForCheckNo=questionService.findQuestionByQuestionNo(question.getQuestionNo());
Question existingQuestion=questionService.findById(question.getId());
if (existingQuestion != null
&& ((question.getSubject().getId() == existingQuestion
.getSubject().getId())
&& (question.getChapter().getId() == existingQuestion
.getChapter().getId())
&& (question.getTopic().getId() == existingQuestion
.getTopic().getId())
&& (question.getQuestionNo().equals(existingQuestion
.getQuestionNo()))
&& (question.getAnswer()
.equals(existingQuestion.getAnswer()))
&&(question.getIsMock()==existingQuestion.getIsMock())
&&(!Arrays.equals(question.getQuestion(), existingQuestion.getQuestion()))
&&(!Arrays.equals(question.getOption1(), existingQuestion.getOption1()))
&&(!Arrays.equals(question.getOption2(), existingQuestion.getOption2()))
&&(!Arrays.equals(question.getOption3(), existingQuestion.getOption3()))
&&(!Arrays.equals(question.getOption4(), existingQuestion.getOption4()))
&&(!Arrays.equals(question.getExplanation(), existingQuestion.getExplanation()))
)) {
return 1;
}
else if(questionForCheckNo!=null){
return 2;
}
return 0;
}
每次只返回'1'时调用此函数。即使我改变了字节数组字段。
但其他一切都很有效。
答案 0 :(得分:0)
您遇到!
!Arrays.equals(question.getQuestion(), existingQuestion.getQuestion())
当您更改数组Arrays.equals()
返回false
时,!false
会将其再次转换为true
。
所以你会得到1