2010-12-15 8 views
5

Z witryny Grails: http://www.grails.org/doc/1.0.x/guide/5.%20Object%20Relational%20Mapping%20(GORM).htmlCzy kaskada Grails usuwa się, gdy nie jest używana metoda domain.delete()?

class Airport { 
String name 
static hasMany = [flights:Flight] 
} 
class Flight { 
String number 
static belongsTo = [airport:Airport] 
} 

Potem dzwoni delete() na przykład na lotnisku usunie wszelkie związane z obiektów lotu (ponieważ belongTo lotniska). Jeśli miałbym usunąć lotnisko za pomocą numeru executeUpdate, czy mogę nadal oczekiwać, że usunie on loty?

Dziękujemy

Odpowiedz

4

Nie spełnia. Oto krótki przykład:

def a0 = new Airport(name: 'Dulles').save() 
def f0 = new Flight(number: '1000', airport: a0).save() 

assert 1 == Airport.count() 
assert 1 == Flight.count() 

Airport.executeUpdate("delete Airport a where a.name = 'Dulles'") 

Plony (w skrócie):

Caused by: java.sql.SQLException: Integrity constraint violation FKB4318470B2E8D1BA table: FLIGHT in statement [delete from airport where name='Dulles'] 
     at org.hsqldb.jdbc.Util.throwError(Unknown Source) 
     at org.hsqldb.jdbc.jdbcPreparedStatement.executeUpdate(Unknown Source) 
     at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:102) 
     ... 27 more 

Jest hibernacji nierozwiązanym problemem zainteresowanie możliwość określenia kaskadę w zapytaniu here.

Ta kopia jest również zapisywana na liście mailingowej Grails here.

+0

Są prawdopodobnie sposoby obejścia tego problemu przez ręczną konfigurację hibernacji (hibernate.cfg.xml), jeśli musisz. –

Powiązane problemy