Я использую 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