質問

Grailsサイトから: http://www.grails.org/doc/1.0.x/guide/5.です

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

その後、呼び出します delete() 空港のインスタンスでは、関連する飛行オブジェクトが削除されます(空港に属しているため)。使用して空港を削除する場合 executeUpdate それでもフライトを削除することを期待できますか?

ありがとうございました

役に立ちましたか?

解決

そうではありません。簡単な例があります:

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

利回り(省略):

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

クエリでカスケードを指定する機能を要求する未解決の冬眠問題があります ここ.

これはGrailsメーリングリストにもバックアップされています ここ.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top