0

Hibernate ツールを介してリバース エンジニアリングされた何百もの Java エンティティがあります。Entity クラスはjava.io.Serializableインターフェイスを実装しているようですが、ありませんserialVersionUID

これらのファイルに追加serialVersionUID する必要があります (最悪の場合、手動で行う必要があります)。他にできる方法はありますか?理想的な解決策は、リバース エンジニアリングの手順自体で行うことですが、パッケージ名を渡しserialVersionUIDてエンティティ クラスに追加することもできます。

Hibernate 3.0を使用しています

4

1 に答える 1

2

これを実装するために独自のコードを書き始めましたが、その後、もっと簡単な解決策を見つけました。次の bash スクリプトは、*.java ファイルを再帰的に実行し (プロジェクトのルートから実行)、Serializable を実装するすべてのファイルを検索します。

#!/bin/bash  

files=$(find . -name '*.java' | xargs grep -i -l "Serializable"  | xargs grep "interface" -L | xargs grep "serialVersionUID" -L)

次に、追加したseruidとどのクラスに追加したかを出力します

do
 serial=$(jot -r 1 1000000000000 9999999999999)
 echo "Adding serialVersionUID $serial to $f"

次に、文字列「implements Serializable」を検索し、その行の下に serialVersionUID 変数を追加します

sed -i '' "/implements Serializable/ a\
    private static final long serialVersionUID =${serial}L;
" $f

done

ここに元の投稿があります

于 2014-12-04T05:31:55.860 に答える