Tôi đang thiết kế một hệ thống trong đó các bài đăng/thảo luận giữa người dùng có thể được nâng cấp để trở thành vé. Tại một địa điểm cụ thể, tôi đang cố gắng tạo mối quan hệ tùy chọn một-một nhưng đang chạy vào một số vấn đề nhất định. Một phiên bản ngưng tụ của các thực thể trong ánh đèn sân khấu được đưa ra dưới đây.Grails/GORM: tạo mối quan hệ tùy chọn một-một-một
Rules:
- Một bài viết có thể trở thành một vé nếu có yêu cầu. (tùy chọn)
- Vé phải có Bài đăng. (Bắt buộc)
Post.groovy
class Post {
String title
String description
String postedBy
Ticket ticket
static hasMany = [comments: Comment]
static constraints = {
title(blank:false)
description(blank:false)
postedBy(blank:false)
ticket (nullable:true,unique:true)
}
}
Ticket.groovy
class Ticket {
String title
String description
String postedBy
Post post
static hasMany = [responses: Response]
static constraints = {
title(blank:false)
description(blank:false)
postedBy(blank:false)
post (nullable:false,unique:true)
}
}
này hoạt động đến một mức độ nào. Tôi có thể:
- Tạo một bài viết để lại vé thuộc tính null Nếu và khi bài được nâng cấp để trở thành một vé
- tôi rõ ràng có thể thiết lập thuộc tính vé của bài viết để trỏ đến vé mẹ.
Tuy nhiên, ánh xạ này không được thực thi ở cấp tên miền. Nó rời khỏi chỗ cho một tình huống mà Ticket1 chỉ tới Post1, nhưng Post1 chỉ tới Ticket2.
tôi đã cố gắng sử dụng một static hasOne = [post: Post]
trong vé lớp nhưng sau đó biết rằng nó có quy định thành hiện diện của một static belongsTo = [ticket: Ticket]
trong bài viết lớp và điều này sẽ trở thành một bắt buộc 1-to-1 mối quan hệ đó không phải là điều tôi tìm kiếm.
Có cách nào để đạt được ánh xạ tùy chọn 1 đến 1 này trong trường hợp này không? Mọi con trỏ sẽ hữu ích nhất.
Vui lòng đóng câu hỏi nếu câu trả lời cho bạn hài lòng. Cảm ơn! :-) – sbglasius
Nó không hoạt động. Tôi không nghĩ 1-1 có thể được tạo ra. Tôi có lẽ nên đóng nó như là unanswerable? –