0

我们有数百个通过 Hibernate 工具进行逆向工程的 Java 实体。Entity 类似乎实现了java.io.Serializable接口,但没有serialVersionUID.

我们的任务是添加serialVersionUID 这些文件(最坏的情况,我们必须手动完成)。我们还有其他方法可以做到吗?一个理想的解决方案是在逆向工程步骤本身中执行此操作,但也可以传入包名称并添加serialVersionUID到实体类中。

我们正在使用休眠 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)

然后它将打印它添加的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

这是原

于 2014-12-04T05:31:55.860 回答