Я работаю с веб-приложением, основанным на Spring Roo 1.0.2. Я определил объект, у которого есть первичный ключ PERSONID, а также несколько других полей.Spring Roo @Id поле не заполнено в DataOnDemand test
@Id
@Column(name = "PERSONID", precision = 10, scale = 0)
private Long personId;
@Size(max = 50)
@Column(name = "NAME")
@NotNull
private String name;
...
РОО управляемые интеграционные тесты содержат функцию, которая создает экземпляр фиктивного объекта и заполняющий каждое из полей не-Id.
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?
В «нормальном» случае Spring Roo создает свои собственные поля идентификатора в одном из своих аспектов (я верю в xx_entity.aj) - Вы дезактивировали поле идентификатора roo manged ID? - И будет ли это работать, если вы используете управляемый идентификатор roo? – Ralph 2010-12-01 22:06:53