我即将评估spring roo,而我正在对现有的mysql数据库方案进行反向工程。除了web mvc json all
命令在某些情况下创建的*_Roo_Controller_Json.aj
文件引用了不存在的JPA实体获取方:getId()
之外,一切运行良好。这似乎发生在以@Id
注释的字段的名称与id不同的情况下。奇怪的是,当我通过执行整个roo脚本从头开始创建应用程序时,并不总是出现这个问题(在下面发布)。spring-roo为错误的@id属性名创建json控制器
的JPA实体ITD看起来像:
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;
}
}
web mvc json all
命令创建带有createFromJson()
方法,其中所述非现有吸气剂getId()
被使用(简化代码)文件FrmwrkAuthItemController_Roo_Controller_Json.aj。
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);
}
....
在Roo脚本来创建应用程序是:
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
我使用的是最新的Spring Roo版本(1.3.1),但也可能会在版本1.2.5中重现错误。我为这个问题创建了一个Jira票:https://jira.spring.io/browse/ROO-3589 – 2015-02-12 12:34:02
@ Andreas-kohlbecker谢谢! – jmvivo 2015-02-12 13:01:38