0

私は現在、GWT/RequestFactory と Hibernate/JPA を永続化プロバイダーとしてアプリを開発しています。

そのため、Entity クラスの変更を開始し、EntityProxies を作成し、orm.xml に対応するマッピングを使用して Version 列を配置し (注釈愛好家には申し訳ありませんが、まだ古い方法で行っています)、休止状態でデータベース スキーマを正しく生成しましたが、私はその中で物事をやろうとしますが、例外があります:

@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()setVersion()メソッドを削除すると役立つかどうかを確認してください。一般に、EntityProxyインターフェイスにはメソッドsetId()setVersion()メソッドを含めないでください。これらのプロパティは永続化メカニズムによってのみ設定する必要があるためです。

于 2011-06-09T22:45:53.013 に答える
1

Locator クラスを使用している場合、別の原因として、Locator の getVersion() メソッドがエンティティのバージョンを返す代わりに null を返すことが考えられます。Eclipse はデフォルトで null の戻り値を生成します。

于 2012-06-08T14:21:32.060 に答える