本文介绍了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



建立失败



OPENJPA WITH H2



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



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


解决方案

你可能碰到这个。 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

OPENJPA WITH H2

Works, with warnings. Example:

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超级基本应用程序是越野车的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-21 17:26