2014-05-22 6 views
0

를 작동하지 :Grails의 고유 제한 조건은 내가 여기에 설명 된 바와 같이 고유 제한 조건이 여러 분야에서 일을 할 수 없습니다</p> <p>고유성과 제약 Grails의의 (하지만 어쩌면 충분하지)에 대해 많이 읽은 여러 필드

class Dog { 
    static constraints = { 
     humanSsn(unique: ['name', 'breed']) 
     //I also tried with just 2 fields, didn't work either. 
    }  

    Integer humanSsn 
    String name 
    String breed 
} 

class Human { 
    static constraints = { 
     ssn(unique: true) 
    }  
    Integer ssn 
    String name 
} 
012 :

http://grails.org/doc/1.3.7/ref/Constraints/unique.html

내가이 개 도메인 클래스를 (내가 Grails를 1.3.9을 사용하고 있습니다)

레거시 DB이므로 테이블을 수정할 수 없습니다.

나는 인간을 저장하면, 나는 같은 이름, 품종과 두 개와

def humanoInstance = new Humano(params) 
     if (humanoInstance.save(flush: true)) { 
      def newDog = new Dog() 
      def newDogTwo = new Dog() 
      newDog.name = "n1" 
      newDog.breed = "b1" 
      newDog.humanSsn = humanInstance.ssn 
      println newDog.validate() 
      println newDog.getErrors() 
      newDog.save(failOnError:true) 

      newDogTwo.name = "n1" 
      newDogTwo.breed = "b1" 
      newDogTwo.humanSsn = humanInstance.ssn 
      println newDogTwo.validate() 
      println newDogTwo.getErrors() 
      newDogTwo.save(failOnError:true) 
    } 

humanSsn

을 저장 (단지 테스트) 그러나 불평이나 오류를 던지고없이 어쨌든 2 개를 저장합니다.

true 
org.springframework.validation.BeanPropertyBindingResult: 0 error 
true 
org.springframework.validation.BeanPropertyBindingResult: 0 error 

내가 뭘 잘못하고 있니?

미리 감사드립니다. 이 때문에 검증을 할 수있다

답변

0

는 데이터베이스 수준 및 newDog.save에서 작동 (failOnError : 사실은) 다음

을 즉시

가 처음 개가 newDog.save(flush:true)

을 시도 한 개 개체를 저장 doesnot 및

newDogTwo.save(failOnError:true) 

작동해야합니다.

+0

당신이 옳았습니다. 먼저 인스턴스를 플러시해야했습니다. 감사! –