Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 验证域类中的每个字段更改_Java - Fatal编程技术网

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())