Я работаю с веб-приложением, построенным на Spring Roo 1.0.2. Я определил объект, который имеет столбец PERSONID первичного ключа, а также несколько других полей.
@Id
@Column(name = "PERSONID", precision = 10, scale = 0)
private Long personId;
@Size(max = 50)
@Column(name = "NAME")
@NotNull
private String name;
...
Интеграционные тесты, управляемые Roo, содержат функцию, которая создает экземпляр фиктивного объекта и заполняет все поля без идентификатора.
public Person PersonDataOnDemand.getNewTransientPerson(int index) {
Person obj = new Person();
obj.setName("name_" + index);
//set other non-Id fields
return obj;
}
Эта функция вызывается из интеграционных тестов и впоследствии завершается ошибкой, поскольку таблица базы данных имеет ненулевое ограничение для столбца PERSONID. Я попытался явно установить аннотацию @NotNull в столбце personId, но это не дало никакого эффекта. Я подозреваю, что это как-то связано с тем фактом, что PERSONID не является автоматически сгенерированным первичным ключом.
Я знаю, что могу решить эту проблему, переопределив интеграционные тесты и заполнив идентификатор самостоятельно, но я хотел бы избежать этого, если это возможно. Кто-нибудь знает, как я могу автоматически заполнить это поле в управляемых объектах DataOnDemand?