1

VersionedJPA のバージョン管理機能 (たとえば、空中衝突のバージョン比較、更新時の自動インクリメント) を使用したい任意の永続エンティティに実装できることを期待して、インターフェイスを定義しました。

public interface Versioned {
    @Version
    int getRevision();
}

これは (もしあったとしても) コーディングを大幅に節約するわけではありませんが、後で計画していたマーカー インターフェイスも提供してくれます。

public class Foo implements Versioned {
    private int revision;

    @Override
    public int getRevision() {
            return revision;
    }
}

@VersionVersionedはメソッドで許可されており、Foo がインターフェイスからその特性を継承することを期待していました。そうではないようです。データベース内の のインスタンスを更新できFooますが、リビジョン番号が自動的に変更されません。

@Versionただし、実装に注釈を追加すると、期待どおりに機能します。

    @Version
    private int revision;

私は立ち往生していません - 必要な機能を手に入れることができます。私はただ興味があります:これをインターフェースのメソッドの注釈で適切に動作させるための「トリック」はありますか? または、誰かがこれが期待どおりに機能しない理由のドキュメントを教えてもらえますか?

4

2 に答える 2