我正在设计一个系统,用户之间的帖子/讨论可以升级成票。在一个特定的地方,我试图创建一对一的可选关系,但遇到了某些问题。聚光灯下实体的精简版本如下。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可以创建。我可能应该将它关闭为无法回答? –