Cái này dành cho người dùng Grails tại đây. Tôi hỏi nó trên grails - danh sách gửi thư của người dùng, nhưng tôi đã tìm ra từ khi tôi đã chiến đấu trong một vài ngày, tôi nên bỏ càng nhiều càng tốt.Grails - nhiều thuộc tính của cùng một lớp với xóa tầng
Tôi gặp khó khăn khi cố gắng mô hình mối quan hệ giữa hai đối tượng cùng loại trong một đối tượng khác (loại khác) tham chiếu hai đối tượng.
Ví dụ về những gì tôi đang cố gắng làm, giả sử bạn đang lập mô hình mối quan hệ giữa các thành viên trong gia đình. Bất kỳ mối quan hệ nào được cho là "thuộc về" hai thành viên gia đình khác nhau. Vì vậy:
class Person {
hasMany[relationships: Relationship]
static mappedBy = [relationships:'p1', relationships:'p2']
}
class Relationship {
Person p1
Person p2
String natureOfRelationship // for example, "cousins"
static belongsTo = [p1: Person, p2: Person]
}
Mục đích ở đây là nếu một trong hai p1 hay p2 bị xóa, thì xóa chí thác cho tất cả các đối tượng quan hệ trong bản đồ hasMany. Thay vào đó, mỗi lần Tôi thử nó, tôi kết thúc với một vi phạm chính nước ngoài. Tôi đã cố gắng sử dụng "cascade" thuộc tính như nêu trong tài liệu:
http://grails.org/doc/1.0.x/guide/single.html#5.5.2.9%20Custom%20Cascade%20Behaviour
Vì vậy, tôi figured tôi sẽ thêm này đến lớp Person:
static mapping = {
relationships cascade:'delete'
}
tôi không có bất kỳ may mắn với điều đó.
Tôi cũng đã xem tệp devDB.script mà Grails tạo ra, để xem cách nó thiết lập khóa ngoài trên Mối quan hệ. Nếu tôi thêm "ON DELETE CASCADE" vào cả hai ràng buộc khóa ngoại, thì nó hoạt động tốt, nhưng rõ ràng thực hiện chỉnh sửa thủ công đối với tập lệnh cơ sở dữ liệu được tạo tự động không phải là giải pháp mạnh mẽ nhất. Lý tưởng nhất là tôi muốn có thể chỉ định hành vi đó bằng cách sử dụng GORM.
Vậy cược nào tốt nhất của tôi ở đây? Có cách nào để buộc xóa tầng trên nhiều khóa/chủ sở hữu nước ngoài không? Tôi có cần phải thực hiện thao tác này theo cách thủ công với một hành động xóa trên Cá nhân không? Tôi có cần phải nhận được vào cấu hình Hibernate cho điều này, hoặc tôi có thể làm điều đó trong Grails/GORM một cách nào đó?
Cảm ơn bạn rất nhiều vì đã dành thời gian và hỗ trợ bạn có thể cung cấp.
dave, bạn đã giải quyết vấn đề này như thế nào? tôi nghĩ ngay cả mã của: static mappedBy = [mối quan hệ: 'p1', các mối quan hệ: 'p2'] là vấn đề –