0

我目前正在开发一个使用 GWT/RequestFactory 和 Hibernate/JPA 作为持久性提供程序的应用程序。

所以我开始修改我的实体类,创建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"

我看看数据库表,版本列在那里......有一个值

所以有人可以告诉我怎么了?任何帮助,将不胜感激 ...

多谢,

4

2 回答 2

1

在进行检查的SimpleRequestProcessor.createReturnOperations()位置设置断点。domainVersion != null没有版本的对象是服务方法新创建的,还是客户端操作过的?如果它是新创建的,您是否有某种请求范围的自动提交,在请求完成后将分配版本?如果它是一个已被客户端变异的实体,请查看删除setId()andsetVersion()方法是否有帮助。通常,您的EntityProxy接口不应该包含setId()andsetVersion()方法,因为这些属性应该只由您的持久性机制设置。

于 2011-06-09T22:45:53.013 回答
1

如果您使用的是 Locator 类,另一个原因可能是 Locator getVersion() 方法返回 null 而不是例如返回实体的版本。Eclipse 默认生成一个空返回值。

于 2012-06-08T14:21:32.060 回答