我们有数百个通过 Hibernate 工具进行逆向工程的 Java 实体。Entity 类似乎实现了java.io.Serializable
接口,但没有serialVersionUID
.
我们的任务是添加serialVersionUID
这些文件(最坏的情况,我们必须手动完成)。我们还有其他方法可以做到吗?一个理想的解决方案是在逆向工程步骤本身中执行此操作,但也可以传入包名称并添加serialVersionUID
到实体类中。
我们正在使用休眠 3.0
我们有数百个通过 Hibernate 工具进行逆向工程的 Java 实体。Entity 类似乎实现了java.io.Serializable
接口,但没有serialVersionUID
.
我们的任务是添加serialVersionUID
这些文件(最坏的情况,我们必须手动完成)。我们还有其他方法可以做到吗?一个理想的解决方案是在逆向工程步骤本身中执行此操作,但也可以传入包名称并添加serialVersionUID
到实体类中。
我们正在使用休眠 3.0
我开始编写自己的代码来实现这一点,但后来我找到了一个更简单的解决方案。以下 bash 脚本通过您的 *.java 文件递归运行(从项目的根目录运行它)并搜索所有实现 Serializable 的文件。
#!/bin/bash
files=$(find . -name '*.java' | xargs grep -i -l "Serializable" | xargs grep "interface" -L | xargs grep "serialVersionUID" -L)
然后它将打印它添加的serialuid以及哪个类
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
这是原帖