Spring Roo @Id字段未在DataOnDemand测试中填充

时间:2010-12-01 21:29:26

标签: java unit-testing spring spring-roo

我正在使用基于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对象中自动填充此字段的方法?

1 个答案:

答案 0 :(得分:0)

Spring Roo在其_entity.aj方面对其自己的ID字段进行了标记。因此,“base”类中不需要使用@ID标记的额外字段。 Roo的管理ID字段应由Roo的DataOnDemand填充。

默认情况下,roo托管ID的数据库列为“id”。如果您需要其他列名称(例如,以匹配数据库架构),则可以由@RooEntity.identifierColumn指定列。