2014-10-01 84 views
0

我有包含在我的控制器類以下字段驗證每個領域的變化領域類

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'.even如果我改變字節數組場時間。

但其他一切都很好。

+0

調試器將幫助你。 – 2014-10-01 06:00:27

+0

我試着用我的遠程調試器..不改變 – boycod3 2014-10-01 06:01:25

+0

questionService.findQuestionByQuestionNo(question.getQuestionNo()); questionService.findById(question.getId()); 這兩個方法將返回什麼? 你可以enplane @ jijishvu07 – yugi 2014-10-01 06:26:17

回答

0

您有問題與!

!Arrays.equals(question.getQuestion(), existingQuestion.getQuestion()) 

當你改變陣列Arrays.equals()返回false,但!false將再次將其轉換爲true

所以你會得到1

+0

其實我每次都得到1,即使我改變我的領域。 兩個都試過'!'沒有。 – boycod3 2014-10-01 06:20:20