Non Grails eliminazioni a cascata quando non si utilizza domain.delete ()?
-
10-10-2019 - |
Domanda
Dal sito Grails: 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]
}
Poi chiamando delete()
su un'istanza di Aeroporto cancellerà tutti gli oggetti di volo associate (in quanto belongTo aeroporto). Se dovessi cancellare un Airport usando executeUpdate
posso ancora aspetto che per cancellare i voli?
Grazie
Soluzione
Non è così. Ecco un rapido esempio:
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'")
I rendimenti (abbreviato):
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
C'è una questione irrisolta Hibernate che richiede la possibilità di specificare la cascata nella query qui .
Questa è anche eseguito il backup sulla mailing list Grails qui .
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow