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

È stato utile?

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
scroll top