几天前,我发布了Roo 1.1.5 super basic application is buggy,就在最近的2011年12月17日,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
的欢迎。不是一个好的开始,但在pom.xml
(作为Andy Datanucleus explained here)
<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"/>
这次我没有得到重复的记录,但是例外:
无法为列“TASK.VERSION”设置Object参数:value = 1:参数“parameterIndex”的值“6”无效[90008-161];嵌套异常是javax.persistence.PersistenceException:无法为列“TASK.VERSION”设置Object参数:value = 1:参数“parameterIndex”的值“6”无效[90008-161]
我不知道是否相关,但我也注意到许多警告类似于以下警告:
WARN DataNucleus.MetaData - Class task.controller.TaskController_Roo_Controller
was specified in persistence-unit persistenceUnit but not annotated, so ignoring
我应该做些什么来改变它?