Проблема с аннотацией @OneToMany в Spring Roo - PullRequest
4 голосов
/ 07 июля 2010

Я пытаюсь использовать Spring Roo для создания сущностей с однонаправленным отношением @OneToMany.Вот что я пробовал:

entity --class ~.family.Child
field string --fieldName name
controller scaffold ~.web.ChildController
entity --class ~.family.Father
field string --fieldName name
field set --fieldName children --element ~.family.Child --cardinality ONE_TO_MANY 
controller scaffold ~.web.FatherController
perform package

Это создает ожидаемые сущности и таблицы базы данных (включая таблицу ссылок). Сущность Father создается со следующей аннотацией, которая соответствует спецификации JPA:

@OneToMany(cascade = CascadeType.ALL)
private Set<family.Child> message = new java.util.HashSet<family.Child>();

Но когда я захожу на сгенерированную Roo страницу администратора и нажимаю Create Father, я нахожу следующее сообщение:

Создать отца

Name:      (field to enter name)
Children:  This relationship is managed from the Father side.

Это похоже на ошибку в Roo.Кто-нибудь нашел обходной путь?Или у меня здесь ошибка?

Ответы [ 2 ]

6 голосов
/ 08 июля 2010

ОК, вот обходной путь: В файле fathers/create.jspx Roo генерирует следующую строку:

<field:simple field="children" id="c:family.Father.children" messageCode="entity.reference.not.managed" 
 messageCodeAttribute="Child" z="dMKrUOiCeYNub4vNayuiWJ99s1k="/>

Это должно быть заменено на:

<field:select field="children" id="c:family.Father.children" itemValue="id" 
 items="${children}" multiple="true" path="/children"/>

И это должно работать.

0 голосов
/ 05 сентября 2011

Да, это ошибка, наверное!

У меня была та же команда. Это работало со старой версией Roo, но я попробовал старый скрипт резервного копирования. Больше не работает.

...