Spring Roo不会生成CRUD

时间:2010-10-31 22:44:47

标签: java jaxb crud spring-roo

在Spring Roo中,我使用this tutorial和我的自定义xsd来生成对象 之后我使用命令 controller all~.web ,生成控制器但没有CRUD功能。

如果我在Roo控制器中生成手动对象,则生成CRUD功能。不知道是什么问题?

模式文件xsd在我看来对REST数据交换非常重要。

2 个答案:

答案 0 :(得分:1)

您所指的教程确实解释了如何基于提供的xml架构创建Java(域)模型,但目前 controller all~.web 命令(版本1.1.0) )仅为实际的Roo(数据库)实体创建控制器和相应的CRUD函数。由于生成的Java类未标记为Roo实体,因此控制器命令不会创建按预期的CRUD命令,正如您所述,它将为手动创建的实体创建,因为这些命令被标记为Roo实体(请参阅@RooEntity关于这些的注释)。

正如教程还指出的那样,当您使用Spring Roo jaxb插件时,您需要手动更新控制器并查看(* .jspx)文件以实现CRUD功能。我知道,通过查看论坛和Jira问题,目前有一些关于Spring Roo为普通(非实体)bean创建基本CRUD功能的想法(参见问题ROO-344及其相关的ROO-277问题) ,但这些目前只是想法,很可能在不久的将来不会实施。因此,当使用XML模式作为Spring Roo域模型的基础时,您仍然需要进行相当多的手动编码才能拥有基本的CRUD应用程序,而不是使用数据库作为生成域模型的基础因为它基本上是在Roo shell中执行一些命令而你已经完成了。

如果您的XML架构只是域模型的定义,并且您确实希望应用程序将数据存储在数据库中并从数据库中检索,那么您可能会调用REST Web服务来检索和存储更改,尝试使用jaxb插件生成模型,然后注释生成的类,但由于我之前没有这样做,我不确定这是否有效,但可能值得尝试。

答案 1 :(得分:0)

Spring Roo在.java源文件旁边生成AspectJ(.aj)文件。因此,您将看不到源文件中的方法。它们位于.aj文件中,但在生成的.class文件中编译后存在。