Roo 1.1.5超级基本应用程序是越野车 [英] Roo 1.1.5 super basic application is buggy

查看:127
本文介绍了Roo 1.1.5超级基本应用程序是越野车的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用Roo 1.1.5和Eclipse STS,这里是我所做的:我从Eclipse创建一个新的Spring Roo项目,并在Roo Shell中输入以下内容:

 持久性设置 - 提供程序DATANUCLEUS  - 数据库H2_IN_MEMORY 
实体 - 类〜.domain.Task
字段字符串--fieldName描述--notNull --sizeMin 3 --sizeMax 512
field boolean --fieldName completed --notNull
controller all --package〜.controller

我的更详细的描述在我的博客,但以上报道基本上是我做的。



在网络浏览器中,我可以创建和列出任务,但如果尝试编辑(更新)任务,而是创建一个新的重复任务...可能这样的错误已经滑入?或者是我做错了什么?



更新:更快我从命令行运行脚本并尝试所有持久性提供者。

  $ roo 
roo>项目--topLevelPackage任务--java 6 --projectName任务
roo>持久性设置--provider DATANUCLEUS - 数据库H2_IN_MEMORY
roo> entity --class〜.domain.Task
roo>字段字符串--fieldName描述--notNull --sizeMin 3 --sizeMax 512
roo> field boolean --fieldName completed --notNull
roo>控制器全部--package〜.controller
roo>退出
$ mvn tomcat:运行#或mvn码头:运行

结果如下:

DATANUCLEUS AND DATANUCLEUS_2 WITH H2



Roo + Datanucleus + H2导致错误应用,更新结果重复记录。



ECLIPSELINK WITH H2



建立失败


以下工件无法解析:org.eclipse.persistence:eclipselink:jar:2.2.0,org.eclipse.persistence:javax.persistence:jar:2.0.3:找不到工件组织.eclipse.persistence:eclipselink:jar:2.2.0在spring-maven-release中(http://maven.springframework.org/release)



OPENJPA WITH H2



有作品,有警告。示例:
$ b


WARN [main] openjpa.Runtime - 使用PersistenceUnitInfo注册ClassTransformer时发生错误:name'persistenceUnit',root URL [文件:/首页/斯特凡诺/工作区/ task4 /目标/班/]。错误已被消耗。要查看它,请将openjpa.Runtime日志级别设置为TRACE。加载时间类转换将不可用。




HIBERNATE WITH H2



作品



使用GOOGLE APP引擎的DATANUCLEUS



作品...

 项目--topLevelPackage任务--java 6 --projectName任务
持久性设置--provider DATANUCLEUS - 数据库GOOGLE_APP_ENGINE \
- applicationId appid
实体--class〜.domain.Task
字段字符串--fieldName描述--notNull --sizeMin 3 --sizeMax 512
字段布尔--fieldName已完成--notNull
controller all --package〜.controller
exit
mvn gae:run


解决方案

你可能碰到这个 JIRA ROO-1467 。 JPA规范留下了许多解释。在DataNucleus 3中,有一个标志可以获得各种不同类型的合并行为,以迎合所有可能发生的情况。


I'm using Roo 1.1.5, with Eclipse STS, here is what I do: I create a new Spring Roo Project from Eclipse, and in the Roo Shell, I type the following:

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 more verbose description is in my blog, but what reported above is basically what I do.

In a web browser I can create and list tasks just fine, but if I try to edit (update) a Task, instead a new duplicated task is created... Possible that a bug like this has slipped in? Or is it something I'm doing wrong?

UPDATE: to be faster I've run the script from the command line and tried with all persistence providers.

$ 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

Here are the results:

DATANUCLEUS AND DATANUCLEUS_2 WITH H2

Roo + Datanucleus + H2 results in a buggy application, updating results in duplicated records.

ECLIPSELINK WITH H2

Build failure

The following artifacts could not be resolved: org.eclipse.persistence:eclipselink:jar:2.2.0, org.eclipse.persistence:javax.persistence:jar:2.0.3: Could not find artifact org.eclipse.persistence:eclipselink:jar:2.2.0 in spring-maven-release (http://maven.springframework.org/release)

OPENJPA WITH H2

Works, with warnings. Example:

WARN [main] openjpa.Runtime - An error occurred while registering a ClassTransformer with PersistenceUnitInfo: name 'persistenceUnit', root URL [file:/home/stefano/workspace/task4/target/classes/]. The error has been consumed. To see it, set your openjpa.Runtime log level to TRACE. Load-time class transformation will not be available.

HIBERNATE WITH H2

works

DATANUCLEUS WITH GOOGLE APP ENGINE

Works...

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

解决方案

Are you perhaps hitting this JIRA ROO-1467. The JPA spec leaves many things open to interpretation. In DataNucleus 3 there is a flag to get various different types of behaviour for merge to cater for all eventualities.

这篇关于Roo 1.1.5超级基本应用程序是越野车的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆