我有六个表,其中包含许多公共字段。
十年前,我向Hibernate逆向工程指定了一些东西来创建映射的超类和六个扩展该类的类。
我可以手动完成,但我相信功能必须仍然存在。
经过两个小时的谷歌搜索并看到手工制作的pojos示例,我找不到如何让报复来做到这一点。
我从来没有弄清楚。 相反,我编写了一个接口和一个抽象类,然后修改了生成的代码。
不漂亮,但它实际上对我有更多的好处。
奇怪的是,我扩展的类必须为每个属性都有一个 setter 方法,否则应用程序将无法加载。
我创建了只抛出不支持的操作异常的设置器
现在,如果可以只在这个项目中获取两个源代码树,并编译由hibernate生成的目标类,而不会胡说八道。
apply() {
FILE=$1
echo $FILE
return
#https://stackoverflow.com/questions/11694980/using-sed-insert-a-line-below-or-above-the-pattern
#https://stackoverflow.com/questions/148451/how-to-use-sed-to-replace-only-the-first-occurrence-in-a-file
sed -i -e "0,/implements/{s/implements/extends AbstractDemand implements/}" $FILE
sed -i -e "3i
import com.techwanker.diamond.planning.AbstractDemand;\n
import com.techwanker.diamond.planning.AllocationMode;\n
import com.techwanker.diamond.planning.demand.DemandType;\n
" $FILE
}
find_file() {
file=`locate $1 | grep "^$PWD" | grep $1$`
return $file
rm -rf src/main/java
mvn hibernate3:hbm2java
apply `find_file ApsDmdOo.java`
apply `find_file ApsDmdSs.java`
apply `find_file ApsDmdFc.java`
cp -r src/main/java-required/java/* src/main/java
cp -r target/generated-sources/* src/main/java
mvn install