У меня есть вопрос о создании ассоциативной таблицы в Grails для согласования отношений "многие ко многим". Настройка такова: 1. Домен A (профиль клиента) может иметь много доменов B (друзей) 2. Каждый домен B (друзья) может иметь много доменов A (профиль клиента) 3. Чтобы решить эту проблему, мне нужно создать ассоциативный таблица (или домен), в которой есть FK из каждой таблицы. Этот домен можно назвать Домен C (client_friend)
Вот код, который у меня есть до сих пор:
class DomainA{
String id
String firstName
String lastName
static hasMany = [domainB: DomainB]
static mapping = {
cache true
id generator: 'assigned'
columns {
firstName type:'text'
lastName type:'text'
alumConnections column: 'domaina_id', joinTable: 'a_b'
}
}
static constraints = {
firstName (nullable:true)
lastName (nullable:true)
}
}
Код доменаB:
class DomainB{
String id
String firstName
String lastName
static hasMany = [domainA:DomainA]
static belongsTo = DomainA
static mapping = {
cache true
id generator: 'assigned'
columns {
firstName type:'text'
lastName type:'text'
domainA column: 'domainb_id', joinTable: 'a_b'
}
}
static constraints = {
firstName (nullable:true)
lastName (nullable:true)
}
}
Код домена A_B:
class AB{
Date dateCreated
Date lastUpdated
long version
}
Когда я запускаю этот код, он работает. Таблицы с помощью MySQL созданы, FK вроде на месте. Когда я ввожу данные в класс DomainB, данные вводятся, и оба PK из DomainA и DomainB вставляются в A_B. Но проблемы возникают, когда я пытаюсь удалить значения из A_B. Я пробовал что-то вроде этого:
AB results =AB.findByAIdAndBId('jIi-hRi4cI','2BYvuA2X14')
но получаю сообщение об ошибке: InvalidPropertyException: свойство не найдено для имени [a_id] для класса [класс mgr.AB]
У меня такой вопрос: во-первых, правильно ли я это настроил? Во-вторых, если да, то как тогда мне запросить таблицу AB, чей PK состоит из композита DomainA и DomainB?
Спасибо за любую помощь.
Джейсон