首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >spring-roo为错误的@id属性名创建了json控制器

spring-roo为错误的@id属性名创建了json控制器
EN

Stack Overflow用户
提问于 2015-02-10 23:44:15
回答 1查看 185关注 0票数 1

我即将评估spring roo,而我正在对现有的mysql数据库方案进行逆向工程。除了web mvc json all命令在某些情况下创建的*_Roo_Controller_Json.aj文件引用了一个不存在的JPA实体getter:getId()之外,其他一切都运行得很好。这似乎发生在使用@Id注释的字段具有与id不同的名称的情况下。奇怪的是,当我通过执行整个roo脚本(如下所示)从头开始创建应用程序时,这个问题并不总是发生。

JPA实体ITD如下所示:

代码语言:javascript
复制
privileged aspect FrmwrkAuthItem_Roo_Jpa_Entity {

    declare @type: FrmwrkAuthItem: @Entity;

    declare @type: FrmwrkAuthItem: @Table(name = "frmwrk_AuthItem");

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "name", length = 64)
    private String FrmwrkAuthItem.name;

    public String FrmwrkAuthItem.getName() {
        return this.name;
    }

    public void FrmwrkAuthItem.setName(String id) {
        this.name = id;
    }   
}

getter命令使用createFromJson()方法创建文件FrmwrkAuthItemController_Roo_Controller_Json.aj,其中使用了不存在的web mvc json all getId() (代码简化)。

代码语言:javascript
复制
privileged aspect FrmwrkAuthItemController_Roo_Controller_Json {

    ...

    @RequestMapping(method = RequestMethod.POST, headers = "Accept=application/json")
    public ResponseEntity<String> FrmwrkAuthItemController.createFromJson(@RequestBody String json, UriComponentsBuilder uriBuilder) {
        HttpHeaders headers = new HttpHeaders();
        headers.add("Content-Type", "application/json");
        try {
            FrmwrkAuthItem frmwrkAuthItem = FrmwrkAuthItem.fromJsonToFrmwrkAuthItem(json);
            frmwrkAuthItemService.saveFrmwrkAuthItem(frmwrkAuthItem);
            RequestMapping a = (RequestMapping) getClass().getAnnotation(RequestMapping.class);

            /******************************************** 
             * below is the corrupt line of code with frmwrkAuthItem.getId()
             * frmwrkAuthItem.getName() would be correct! 
             ********************************************/
            headers.add("Location",uriBuilder.path(a.value()[0]+"/"+frmwrkAuthItem.getId().toString()).build().toUriString());

            return new ResponseEntity<String>(headers, HttpStatus.CREATED);
        } catch (Exception e) {
            return new ResponseEntity<String>("{\"ERROR\":"+e.getMessage()+"\"}", headers, HttpStatus.INTERNAL_SERVER_ERROR);
        }

        ....

代码语言:javascript
复制
project --topLevelPackage org.myproject
jpa setup --provider ECLIPSELINK --database MYSQL --databaseName myproject  --userName *** --password ***
addon install bundle --bundleSymbolicName org.springframework.roo.wrapping.mysql-connector-java

database reverse engineer --schema myproject --service --package ~.domain
json all
web mvc setup --package ~.contoller
web mvc all --package ~.contoller
web mvc json all
EN

回答 1

Stack Overflow用户

发布于 2015-02-10 23:59:11

您使用的是哪个Spring Roo版本?

如果是最新的,我认为这个问题可能是个bug。你能在Spring Roo Jira中创建一个关于它的工单吗?

为了更快地解决问题,您可以包含项目的备份(您可以在删除roo.log文件的用户/密码之后使用backup Spring-Roo-shell命令)。

致以问候。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28435771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档