2016-12-23 1 views
0

löschen Ich werde mir dies durch Tests werden beantwortet, aber dachte, ich Stackoverflow Gemeinschaft ...Does Grails Domain() Update Menge eines Kinder innerhalb einer Transaktion

In einer Grails Domain-Transaktion, wird die Anzahl Rennen würde von untergeordneten Datensätzen ändern sich innerhalb der Transaktion (z. B. mit löschen)

MyDomain.withTransaction{status-> 
    try{ 
     while(parent.children.size()>4){ 
      parent.children[0].delete(flush:true); 
     } 
    } 
    catch(org.springframework.dao.DataIntegrityViolationException e){ 
     status.setRollbackOnly(); 
    } 

} 

Antwort

0

Die Antwort ist ja. Obwohl Grails den Kindern keinen Zugang zu den Kindern gewähren würden [0]. Ich hatte dies zu umgehen, indem children.collect mit {it} [0] oder children.iterator() next()

Test:.

def p=new TestParentDomain(); 
def i=0 
while(i<3){ 
    def child=new TestChildDomain(); 
    m.addToChildren(child); 
    i++ 
} 
m.save(flush:true); 
println p.children.size() //3 

TestParentDomain.withTransaction{status-> 
    while(m.children.size()>1){ 
     m.removeFromChildren(m.children.iterator).next()).save(flush:true) 
    } 
} 
println m.children.size();//1 
Verwandte Themen