0

我已经使用 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", 实体 = { @javax.persistence.EntityResult(model.VenueRecord.class) }, 列 = { @javax.persistence.ColumnResult("distance")})

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

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

4

1 回答 1

0

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

  1. 使用STS 的“AspectJ 重构/推入...”上下文菜单选项(选择.aj文件上的方法/声明)
  2. 将代码移动到 de .java文件(并删除类名前缀)。

之后,Roo 将检测到 de .java中的方法/声明,并且不会再次生成它。

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

祝你好运!

于 2014-11-10T14:05:00.753 回答