이 예외는 새 모델에 id를 할당하고 GORM이 업데이트를 수행해야한다고 생각하기 때문에이 모델을 저장하려고 할 때 발생합니다. 내가 Grails의-몽고 플러그인 1.3.0 사용 된이 문제에 실행하면이 예외가
발생하는 이유
. Grails 데이터 저장소 코어 코드 1.1.9를 사용합니다. 예외가 라인 847(ish) of NativeEntryEntityPersister에 생성 된 것으로 나타났습니다. 이 코드는 db의 기존 도메인 객체를 업데이트합니다.
Above that on line 790은 업데이트인지 확인하는 데 사용되는 isUpdate
입니다. isInsert
은 이 객체에 할당 된 ID를 반환하므로 isUpdate
이 true로 평가 될 수 있으므로 true
인 경우에만 이므로 false
이므로 그대로 사용하십시오. 당신이 삽입 코드가 호출되는 것이다 인서트를 강제 과연 예외가 사라집니다 경우
라인 (791)에 && !isInsert
에 예외를
감사 고정. 그러나이 작업을 수행하면 할당 된 ID가 저장되지 않고 대신 생성 된 개체 ID가 사용되었습니다. 나는이 문제가 발전기가 "assigned"
으로 설정되어 있는지 확인하기 위해 line 803에있는 것을 보았다.
다음 매핑을 추가 할 수 있도록 수정하십시오.
class Cover {
String id
String name
String url
String sku
String price
static mapping = {
id generator: 'assigned'
}
}
부작용은 새 Cover 도메인 개체에 항상 ID를 할당해야한다는 것입니다.
나는 GORM이 왜 그렇게 생각하는지 이해하지 못합니다. 설명해 주시겠습니까? – sphinks
곰이 왜 이것을 생각하는지에 대한 자세한 내용으로 질문을 업데이트했습니다. – PaddyDwyer