Я разрабатываю систему, в которой сообщения / обсуждения между пользователями могут быть обновлены, чтобы стать тикетами. В одном конкретном месте я пытаюсь создать необязательные индивидуальные отношения, но у меня возникают определенные проблемы. Краткая версия сущностей, находящихся в центре внимания, приведена ниже.
Правила:
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.
Я попытался использовать статический hasOne = [post: Post]
в классе Ticket , но позже узнал, что он требует наличия static ownTo = [ticket: Ticket]
в классе Post , и это становится обязательным отношением один-к-одному, чего я не ищу.
Есть ли способ добиться этого необязательного сопоставления 1 к 1 в этом сценарии? Любые указатели были бы наиболее полезны.