Запуск Grails 3.3.10, у меня есть сущность Product, которая имеет отношение «многие ко многим» с таблицей «Сообщение» в двух отдельных полях (product.type1Messages и product.type2Messages), а поле «type» находится вприсоединить таблицу в базе данных.
Можно ли использовать сопоставления для получения нужных сообщений в нужные коллекции?
Пожалуйста, найдите мой код ниже:
CREATE TABLE `productmessage` (
`productId` int(11) NOT NULL,
`messageId` int(11) NOT NULL,
`type` int(11) NOT NULL,
PRIMARY KEY (`productId`,`messageId`,`type`)
);
class Product {
static hasMany = [ type1Messages: Message, type2Messages: Message ]
static mappedBy = [ type1Messages: "type1Product", type2Messages: "type2Product" ]
static mapping = {
type1Messages joinTable: [name: 'productmessage', key: 'productId', column: 'messageId']
type2Messages joinTable: [name: 'productmessage', key: 'productId', column: 'messageId']
}
}
class Message {
Product type1Product
Product type2Product
static mapping = {
type1Product column: "productId"
type2Product column: "productId"
}
}
Мне нужно, чтобы мой product.type1Messages
содержал только те, которые имеют тип 1, в таблице соединений, а product.type2Messages
содержал те, которые имеют тип 2. Это возможно и, если да, что мне нужно добавить?
Редактировать Я только что понял, что, возможно, запутал вещи, заявив отношение «многие ко многим», а затем упростил пример, чтобы показать только один ко многим.Обратите внимание, что моя проблема в том, что тип находится в таблице соединений, а не в том, как представлять «многие ко многим».