관련 엔티티를 삭제하고이 변경 사항을 데이터베이스에 유지하는 데 문제가 있습니다.grails/GORM/hibernate - 부모의 save()에 hasMany 맵이 동기화되지 않았습니다.
그루비 오브젝트 부모에는 많은 자식 엔티티가 있습니다. 이 도메인 객체를 찾고이 목록을 null로 설정하면 parent. save (flush : true) 자식 요소가 데이터베이스에 남아 있습니다. 이것들이 삭제 된 것을 기대했을 것입니다. 어떤 제안이라도 좋을 것입니다.
class Parent {
static hasMany = [child:Child] ... }
와 아이 :
class Child {
belongsTo = [Parent] ... }
우리는 요소를 추가 및 삭제 : 우리가 될 것이라고 잘못 무슨 짓을했는지에 대한
def child = new Child()
def parent = new Parent(child:child)
parent.save(flush:true) def id = parent.id //from saved entity
/// in separate transaction
parent = Parent.get(id) //id from above parent.child = null
parent.save(flush:true)
// check database - child reference still there - expect to have been deleted
어떤 제안 고맙습니다. grails 1.3.5 (최신 버전) 사용.
아주 좋은 답변입니다. 블로그 읽기 - 그만한 가치가 있습니다! – sbglasius
당신의 솔루션은 기본적으로 말한 것입니다. 나는 관련 문서를 지적했다. 한 남자에게 물고기를 주면 그는 하루 동안 먹고 남자에게 고기를 가르쳐 주며 일생 동안 먹는다 .... – hvgotcodes
이러한 코멘트를 주셔서 감사합니다; 나는이 일을 할 수 없었고이 단계에서 조사를위한 더 많은 시간 예산을 가지고 있지 않습니다.계단식 "all-delete-orphan"및 "all, delete-orphan"설정 시도. 또한 각 항목을 삭제하고 clear를 호출 한 다음 새 행을 추가하려고 시도했지만 staleObject 예외를 저장합니다. 다시 조사 할 경우 logSql을 사용하여 최대 절전 모드의 작동 방식 및 디버깅 방법을 더 많이 이해할 수 있지만 기다려야합니다. 제공된 답변을 제공해 주셔서 감사합니다. – Alex