Spring Roo 1.2.4 @RooWebJson如果支持jsonObject没有@RooJpaActiveRecord,则不生成.aj文件

时间:2013-07-01 15:28:21

标签: spring annotations spring-roo

我正在使用Spring Roo 1.2.4和STS 3.2.0。

我有一个Email对象,它是一个域类,所以它有以下注释:

@RooJavaBean
@RooToString
@RooJpaActiveRecord

我的EmailController具有以下注释:

@RequestMapping("/emails")
@Controller
@RooWebScaffold(path = "emails", formBackingObject = Email.class)
@RooWebJson(jsonObject = Email.class)

我的EmailServiceController_Roo_Controller_Json.aj生成完美。

现在,我想要一个EmailBean对象,它代表我的Email类中的一部分字段,这样我就可以通过仅传入json所需的相关字段来允许外部系统创建Email对象,其余的域类是由系统在保存时生成的。

我用以下内容注释了EmailBean:

@RooJson
@RooJavaBean
@RooToString

正如你所看到的,没有@RooSpaActiveRecord,因为这个bean不代表数据库中的任何东西(不是域类)。

现在,在创建EmailServiceController并使用:

进行注释时
@RequestMapping("/service/emails")
@Controller
@RooWebJson(jsonObject = EmailBean.class)

未生成EmailServiceController_Roo_Controller_Json.aj。为什么是这样?如果我将@RooSpaActiveRecord注释添加到我的EmailBean,则会生成EmailServiceController_Roo_Controller_Json.aj。如果我使用@RooSpaActiveRecord注释注释EmailBean,为什么Roo只生成json控制器aj文件?我做错了吗?

1 个答案:

答案 0 :(得分:0)

在进一步了解在控制器上为@RooJpaActiveRecord注释的域类生成的实际json方法之后,我注意到它们都面向CRUD操作(即影响数据库)。这意味着从Roo的角度来看,为不是域类(存储在db中)的实体生成控制器json方法是没有意义的,因为它不知道您正在寻找什么样的业务方法。这意味着我需要在我的控制器中手动创建自己的,因为只有我知道我想要做什么。