2010-12-01 67 views
1

我正在構建基於Spring Roo 1.0.2的Web應用程序。我已經定義了一個具有主鍵PERSONID列以及其他幾個字段的實體。DataOnDemand中未填充Spring Roo @Id字段test

@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

在「正常」情況下,Spring Roo在其一個方面創建自己的ID字段(我相信xx_entity.aj) - 您是否已經取消了roo manged ID字段? - 如果你使用roo管理標識,它會工作嗎? – Ralph 2010-12-01 22:06:53

回答

0

Spring Roo在_entity.aj方面爲它自己的ID字段生成了自己的ID字段。因此在「base」類中不需要額外的@ID標記。 Roo的託管ID字段應由Roo的DataOnDemand填充。

默認情況下,roo管理標識的數據庫列爲「id」。如果您需要其他列名(例如,以匹配數據庫模式),那麼該列可由@RooEntity.identifierColumn指定。