【问题标题】:How can I stop spring roo updating SQLResultSetMapping annotation incorrectly?如何阻止 spring roo 错误地更新 SQLResultSetMapping 注释?
【发布时间】:2014-11-09 22:08:06
【问题描述】:

我已经使用 Spring Roo 有一段时间了。我真的很喜欢它如何消除平凡的编程并让您真正专注于应用程序的逻辑。然而,我最近发现自己与运行时作斗争,因为它不断更新我的 JPA 注释并删除属性名称。

我正在调用一个存储过程,在其中计算派生值(从用户当前位置到场地的距离)并尝试将其存储在 JPA 记录对象中。正如这个问题SqlResultSetMapping columns as and entities 中所述,我已经能够使代码成功运行

我设法通过禁用 Spring Roo shell 然后在重新编译我的项目之前手动更新注释来做到这一点。

但是,当我在运行 Roo shell 的 spring 源工具套件中编写此逻辑时,Roo 运行时总是从这里更新注释:

@SqlResultSetMapping(name = "findVenuesByDistanceMapping", 实体 = { @javax.persistence.EntityResult(entityClass=model.VenueRecord.class) }, 列 = { @javax.persistence.ColumnResult(name="distance") })

到这里:

@SqlResultSetMapping(name = "findVenuesByDistanceMapping", entity = { @javax.persistence.EntityResult(model.VenueRecord.class) }, columns = { @javax.persistence.ColumnResult("distance")})

您会注意到它已删除注释属性标识符。然后,当我尝试编译该类时,我得到了一个异常。除非我完全离开 Spring Roo,否则似乎没有办法解决这个问题。这会令人失望,因为我已经使用了几个月,最近才发现一个我似乎无法解决的问题。

是否有人对我如何解决此问题有任何建议?也许甚至修改 spring roo 代码以识别正确的注释格式?

【问题讨论】:

    标签: jpa spring-roo sts-springsourcetoolsuite spring-orm


    【解决方案1】:

    只需将 Roo 生成的代码推入到您的 java 类中。您可以通过两种方式对其进行归档:

    1. 使用"AspectJ refactoring/Push in..." STS 的上下文菜单选项(选择 .aj 文件上的方法/声明)
    2. 将代码移至 .java 文件(并删除类名前缀)。

    之后,Roo会检测到de .java里面的方法/声明,不会再生成了。

    无论如何,如果您在 Roo 生成的代码中发现问题,您可以在 Roo Jira 上报告它,以便在下一个版本中修复。

    祝你好运!

    【讨论】:

    • 注解不是 ITD 的一部分,因此不能被推入。注解在主类中,在这方面它是作为 spring roo 一部分的活动记录类。
    • 对不起.. 现在我可以看到了。我误解了这个问题。此错误已在此处报告 (jira.spring.io/browse/ROO-3556)。
    • 是的,我在 jira 上找不到任何东西,所以我自己提出了它。谢谢你看看。我很感激
    猜你喜欢
    • 1970-01-01
    • 2011-03-12
    • 2016-08-22
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    • 2017-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多