У меня возникают некоторые проблемы с пониманием того, как смоделировать агрегированный корень с помощью Slick - или, если вообще возможно, при разумных усилиях!
Допустим, у меня есть Order
, который содержитнабор OrderItem
с.Для них есть некоторый инвариант, поэтому я моделирую их как агрегат на уровне домена, где Order
является корнем агрегата.Это, конечно, будет смоделировано как две таблицы в реляционной базе данных.
Проблема в том, что из того, что я понял, Slick не предоставляет какого-либо простого способа иметь ссылки между сущностями.
Само создание объектов в хранилище не будет такой большой проблемой
class OrderRepository {
def get(id: Long) = {
// load order data
// now load all order items data
Order(.., .., order items, ...)
}
, но я бы не хотел вручную писать логику вставки / сохранения / обновления OrderItem
(проверка наличия новых элементов или их удаления или обновления, какие поля были обновлены и т. д.)
Есть ли простой способ сделать это или мне придется прибегнуть к отсутствию какого-либо агрегата?корни и моделировать все как сущности вместо?