Несколько дней назад я опубликовал Супер базовое приложение Roo 1.1.5 с ошибкой , и совсем недавно, 17 декабря 2011 года, была выпущена Spring Roo 1.2.0.Я создал эквивалентный проект:
project --topLevelPackage task --java 6 --projectName Task
jpa setup --provider DATANUCLEUS --database H2_IN_MEMORY
entity jpa --class ~.domain.Task
field string --fieldName description --notNull --sizeMin 3 --sizeMax 512
field boolean --fieldName completed --notNull
web jsf setup
controller all --package ~.controller
exit
mvn jetty:run
И меня встретили java.lang.NoClassDefFoundError: javax/jdo/JDONullIdentityException
.Не очень хорошее начало, но легко решить добавление отсутствующей зависимости jdo-api в pom.xml
(как объяснил Энди Датануклеус )
<dependency>
<groupId>javax.jdo</groupId>
<artifactId>jdo-api</artifactId>
<version>3.0</version>
</dependency>
На этом этапе приложение можетзапустить, но дублированная запись об ошибке обновления все еще была там.Итак, как объяснил Энди, я снова добавил в JIRA ROO-1467 к persistence.xml
:
<property name="datanucleus.allowAttachOfTransient" value="true"/>
На этот раз я не получил дублированную запись,но исключение:
Невозможно установить параметр объекта: значение = 1 для столбца "TASK.VERSION": недопустимое значение "6" для параметра "parameterIndex" [90008-161];вложенное исключение: javax.persistence.PersistenceException: невозможно установить параметр объекта: значение = 1 для столбца «TASK.VERSION»: недопустимое значение «6» для параметра «parameterIndex» [90008-161]
Iне знаю, актуально это или нет, но я также заметил много предупреждений, похожих на следующее:
WARN DataNucleus.MetaData - Class task.controller.TaskController_Roo_Controller
was specified in persistence-unit persistenceUnit but not annotated, so ignoring
Какие еще изменения я должен сделать, чтобы это заработало?