Roo 1.1.5 супер базовое приложение глючит - PullRequest
0 голосов
/ 14 декабря 2011

Я использую Roo 1.1.5 с Eclipse STS, вот что я делаю: я создаю новый проект Spring Roo из Eclipse, а в Roo Shell я набираю следующее:

persistence setup --provider DATANUCLEUS --database H2_IN_MEMORY 
entity --class ~.domain.Task
field string --fieldName description --notNull --sizeMin 3 --sizeMax 512
field boolean --fieldName completed --notNull
controller all --package ~.controller

A Более подробное описание есть в моем блоге , но вышеизложенное в основном относится к тому, что я делаю.

В веб-браузере я могу просто создавать и перечислять задачи, но если я пытаюсьчтобы отредактировать (обновить) задачу, вместо этого создается новая дублированная задача ... Возможно, что ошибка, как эта, появилась?Или я что-то не так делаю?

ОБНОВЛЕНИЕ : чтобы быть быстрее, я запустил скрипт из командной строки и попробовал все провайдеры персистентности.

$ roo
roo> project --topLevelPackage task --java 6 --projectName Task
roo> persistence setup --provider DATANUCLEUS --database H2_IN_MEMORY 
roo> entity --class ~.domain.Task
roo> field string --fieldName description --notNull --sizeMin 3 --sizeMax 512
roo> field boolean --fieldName completed --notNull
roo> controller all --package ~.controller
roo> exit
$ mvn tomcat:run #or mvn jetty:run

Вот результаты:

DATANUCLEUS AND DATANUCLEUS_2 С H2

Roo + Datanucleus + H2 приводит к ошибочному приложению, обновляя результаты в дублированных записях.

ECLIPSELINK WITH H2

Ошибка сборки

Не удалось разрешить следующие артефакты: org.eclipse.persistence: eclipselink: jar: 2.2.0, org.eclipse.persistence: javax.persistence: jar: 2.0.3: не удалось найти артефакт org.eclipse.persistence: eclipselink: jar: 2.2.0 в выпуске spring-maven (http://maven.springframework.org/release)

OPENJPA С H2

Работает, с предупреждениями. Пример:

WARN [main] openjpa.Runtime - Произошла ошибка при регистрации ClassTransformer с PersistenceUnitInfo: имя 'persistenceUnit', корневой URL [файл: файл:/ home / stefano / workspace / task4 / target / classes /]. Ошибка сработала. Чтобы увидеть ее, установите для уровня журнала openjpa.Runtime значение TRACE. Преобразование класса времени загрузки не будет доступно.

HIBERNATE с H2

работает

DATANUCLEUS с двигателем GOOGLE APP

Работает ...

project --topLevelPackage task --java 6 --projectName Task
persistence setup --provider DATANUCLEUS --database GOOGLE_APP_ENGINE \
    --applicationId appid
entity --class ~.domain.Task
field string --fieldName description --notNull --sizeMin 3 --sizeMax 512
field boolean --fieldName completed --notNull
controller all --package ~.controller
exit
mvn gae:run

Ответы [ 2 ]

1 голос
/ 16 декабря 2011

Возможно, вы попали в этот JIRA ROO-1467 .Спецификация JPA оставляет много вещей открытыми для интерпретации.В DataNucleus 3 есть флаг, чтобы получить различные типы поведения для объединения для удовлетворения всех возможных ситуаций.

0 голосов
/ 14 декабря 2011

Я пробовал ваш скрипт (но я использовал Hibernate вместо datanucleus из-за некоторых не найденных зависимостей).Но это сработало для меня без каких-либо проблем.

Так что, возможно, проблема в том, что выпущено datanucleus, или это "вне" этого сценария.

...