Frage

Von der Grails-Website: http://www.grails.org/doc/1.0.x/guide/5.%20Object%20Relational%20Mapping%20 (GORM) .html

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

Dann ruft delete() auf einer Instanz von Flughafen löscht alle zugehörigen Objekte Flug (da sie belongTo Flughafen). Wenn ich einen Flughafen mit executeUpdate löschen war kann ich immer noch erwarten, dass es die Flüge löschen?

Danke

War es hilfreich?

Lösung

Es ist nicht. Hier ist ein kleines Beispiel:

 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'")

Die Ausbeuten (abgekürzt):

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

Es ist ein ungelöstes Problem Hibernate anfordernden die Fähigkeit, die Kaskade in der Abfrage hier angeben .

Dies ist auch auf der Grails-Mailingliste gesichert hier .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top