Java 验证域类中的每个字段更改
我有一个包含以下字段的域类Java 验证域类中的每个字段更改,java,Java,我有一个包含以下字段的域类 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 Top
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”。即使我更改了字节数组字段
但其他一切都很好。你有问题
当您更改数组时,array.equals返回false,但是!false将再次将其转换为true
因此,您将得到1调试器将帮助您。我尝试使用远程调试器..no changequestionService.findQuestionByQuestionNoquestion.getQuestionNo;questionService.findByIdquestion.getId;这两个方法将返回什么?你能登上@jijishvu072号飞机吗?2号线运行良好。如果条件允许,可能会出现错误。“按问题查找问题”的第一行不是唯一的结果。第二行是“按id查找”问题。根据代码,它应该可以工作:。胡乱猜测-字节数组是否可能未初始化/未正确传输/未序列化并最终为空?实际上,即使我更改字段,每次都会得到1。两人都用“!”试过了而且没有。
!Arrays.equals(question.getQuestion(), existingQuestion.getQuestion())