我正在使用基于Spring Roo 1.0.2构建的Web应用程序。我已经定义了一个具有主键PERSONID列的实体以及其他几个字段。
@Id
@Column(name = "PERSONID", precision = 10, scale = 0)
private Long personId;
@Size(max = 50)
@Column(name = "NAME")
@NotNull
private String name;
...
Roo托管集成测试包含一个实例化模拟对象并填充每个非Id字段的函数。
public Person PersonDataOnDemand.getNewTransientPerson(int index) {
Person obj = new Person();
obj.setName("name_" + index);
//set other non-Id fields
return obj;
}
此函数从集成测试中调用,随后失败,因为数据库表在PERSONID列上具有非空约束。我已尝试在personId列上显式设置@NotNull注释,但它没有任何效果。我怀疑这与PERSONID是非自动生成的主键这一事实有关。
我知道我可以通过覆盖集成测试并自己填充Id来解决这个问题,但我想尽可能避免这种情况。有没有人知道我可以在托管的DataOnDemand对象中自动填充此字段的方法?
答案 0 :(得分:0)
Spring Roo在其_entity.aj方面对其自己的ID字段进行了标记。因此,“base”类中不需要使用@ID标记的额外字段。 Roo的管理ID字段应由Roo的DataOnDemand填充。
默认情况下,roo托管ID的数据库列为“id”。如果您需要其他列名称(例如,以匹配数据库架构),则可以由@RooEntity.identifierColumn
指定列。