Grails / GORM - эквивалент JPA @ElementCollection

У меня есть шаблон композиции, в котором родительский объект имеет список дочерних объектов, например Order и LineItem.

Он ведет себя аналогично каскадированию с удаленными сиротами, но дочерние объекты - это @Embeddables вместо @Entities и не получают своих собственных идентификаторов - они всегда управляются через их родительский объект.

В JPA я мог бы сделать что-то вроде этого, чтобы гарантировать, что всякий раз, когда я сохраняю заказ, коллекция LineItems синхронизируется, включая удаление удаленных элементов:

public class Order {
  @ElementCollection
  @CollectionTable(...)

  private Set<LineItem> items;

}

Какой эквивалент в Grails?

Я могу сделать hasMany с каскадом all-delete-orphan, но предпочел бы, чтобы у дочерних объектов был аналогичный способ не иметь собственных идентификаторов (в основном, не быть объектами).


person wrschneider    schedule 02.05.2013    source источник


Ответы (1)


Вы можете использовать static embedded в Order. См. это.

person dmahapatro    schedule 02.05.2013
comment
Это будет работать для других вариантов использования @Embeddable, но не касается @ ElementCollection / @ CollectionTable. - person wrschneider; 03.05.2013
comment
GORM может предоставить вам отношения, которые вы хотели, я полагаю, если я не ошибаюсь. Я записал здесь вариант использования (pastebin.com/xwd4augW), вы можете сослаться на него. Цель состоит в том, чтобы динамически заполнить список встроенных дочерних элементов, что и делает пример. Сообщите, что я неправильно понял ваш вопрос. - person dmahapatro; 03.05.2013