Как избавиться от «Постоянная сущность с идентификатором XXX имеет нулевую версию» в GWT? - PullRequest
0 голосов
/ 09 июня 2011

В настоящее время я разрабатываю приложение с GWT / RequestFactory и Hibernate / JPA как постоянный поставщик.

Итак, я начал изменять свои классы Entity, создал EntityProxies, поместил столбец Version с соответствующим отображением в orm.xml (извините за поклонников аннотаций, я все еще делаю это по-старому), получил hibernate, генерирует схему базы данных правильно, но когда я пытаюсь сделать что-то в этом, у меня есть исключение:

@ProxyFor(XXXXX)
public interface UserProxy extends EntityProxy {
    public Long getId();
    public void setId(Long id);
    public Integer getVersion();
    public void setVersion(Integer version);

    // removed ...
}

"The persisted entity with id XXX has a null version"

Я смотрю на таблицу базы данных, там есть столбец версии ... со значением

так может кто-нибудь сказать мне, что не так? Любая помощь будет оценена ...

Большое спасибо,

Ответы [ 2 ]

1 голос
/ 08 июня 2012

Если вы используете класс Locator, другой причиной может быть метод getVersion () Locator, возвращающий ноль вместо, например ,. возвращение версии объекта. Eclipse генерирует нулевое возвращаемое значение по умолчанию.

1 голос
/ 10 июня 2011

Установите точку останова в SimpleRequestProcessor.createReturnOperations(), где выполняется проверка domainVersion != null. Является ли объект, который не имеет версии, вновь созданной методами сервиса, или это та, с которой работал клиент? Если он только что создан, у вас есть какая-то автоматическая фиксация в области запроса, где будет назначена версия после завершения запроса? Если это объект, который был видоизменен клиентом, посмотрите, помогает ли удаление методов setId() и setVersion(). В общем случае ваш интерфейс EntityProxy не должен включать методы setId() и setVersion(), поскольку эти свойства должны всегда устанавливаться только вашим механизмом сохранения.

...