我正在設計一個系統,用戶之間的帖子/討論可以升級成票。在一個特定的地方,我試圖創建一對一的可選關係,但遇到了某些問題。聚光燈下實體的精簡版本如下。Grails/GORM:創建一對一的可選關係
規則:如果需要
- 一個帖子可以成爲票。 (可選)
- 一張票必須有一個帖子。 (強制)
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)
}
}
這適用到一定程度。我:
- 創建一個帖子留下的車票屬性無效如果當後升級成爲票
- 我可以明確地設置郵政票屬性指向父票。
但是,該映射不在域級別實施。它爲Ticket1指向Post1留下空間,但Post1指向Ticket2。
我試圖在票務類使用static hasOne = [post: Post]
,但後來才知道,它要求一個static belongsTo = [ticket: Ticket]
在後類的存在,這成爲一個強制性的1對1的關係這是不是我尋找。
有沒有辦法在這種情況下實現這種1對1的可選映射?任何指針都是最有幫助的。
如果回答滿意,請關閉問題。謝謝! :-) – sbglasius
它不起作用。我不認爲1-1可以創建。我可能應該將它關閉爲無法回答? –