验证域类中的每个字段更改

时间:2014-10-01 05:58:36

标签: 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 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'时调用此函数。即使我改变了字节数组字段。

但其他一切都很有效。

1 个答案:

答案 0 :(得分:0)

您遇到!

的问题
!Arrays.equals(question.getQuestion(), existingQuestion.getQuestion())

当您更改数组Arrays.equals()返回false时,!false会将其再次转换为true

所以你会得到1