2010-12-15 14 views
5

Từ trang web Grails: http://www.grails.org/doc/1.0.x/guide/5.%20Object%20Relational%20Mapping%20(GORM).htmlGrails thác có bị xóa khi không sử dụng domain.delete() không?

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

Sau đó gọi delete() trên một thể hiện của sân bay sẽ xóa bất kỳ đối tượng bay liên quan (kể từ khi họ belongTo sân bay). Nếu tôi muốn xóa một Sân bay bằng cách sử dụng executeUpdate tôi có thể vẫn mong đợi nó xóa Chuyến bay không?

Cảm ơn bạn

Trả lời

4

Nó không. Dưới đây là một ví dụ nhanh:

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

Sản lượng (viết tắt):

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ó một vấn đề chưa được giải quyết Hibernate yêu cầu khả năng xác định các thác trong truy vấn here.

Điều này cũng được sao lưu trên danh sách gửi thư của Grails here.

+0

Có lẽ bạn có thể giải quyết vấn đề này bằng cách định cấu hình hibernate (hibernate.cfg.xml) theo cách thủ công, nếu cần. –

Các vấn đề liên quan