Hibernate工具DelegatingReverseEngineeringStrategy构造方法异常求助
解决Hibernate逆向工程自定义策略构造方法异常问题
1. 修复自定义策略类的构造方法
DelegatingReverseEngineeringStrategy没有无参构造器,要求子类必须实现带ReverseEngineeringStrategy参数的构造方法,你的MyReverseEngineeringStrategy必须显式调用父类构造方法:
public class MyReverseEngineeringStrategy extends DelegatingReverseEngineeringStrategy { // 必须实现该构造方法,传入委托策略实例 public MyReverseEngineeringStrategy(ReverseEngineeringStrategy delegate) { super(delegate); } // 重写需要自定义的逆向工程方法,示例: @Override public String tableToClassName(TableIdentifier tableIdentifier) { // 自定义表转类名逻辑 return super.tableToClassName(tableIdentifier); } }
缺少这个构造方法会导致Hibernate Tools实例化策略类时找不到匹配的构造器,直接抛出构造方法异常。
2. 修正Hibernate Core依赖配置
你的pom中hibernate-core的<type>pom</type>会让Maven只处理pom依赖关系,不引入实际jar包,这会缺失Hibernate核心类,间接引发构造相关异常。修改依赖:
<dependencies> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>5.6.15.Final</version> <!-- 移除type标签,默认引入jar包 --> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-tools</artifactId> <version>5.6.15.Final</version> </dependency> </dependencies>
3. 验证逆向工程配置文件
检查hibernate.reveng.xml中策略类的全路径是否正确,避免拼写错误:
<hibernate-reverse-engineering> <!-- 替换为你的策略类全限定名 --> <strategy class="com.yourpackage.MyReverseEngineeringStrategy"/> <!-- 其他逆向工程规则配置 --> </hibernate-reverse-engineering>
4. 确认类路径有效性
执行mvn clean compile命令,检查target/classes目录下是否生成了MyReverseEngineeringStrategy.class文件,确保类已被正确编译并加载到类路径中。
内容的提问来源于stack exchange,提问作者Sebastian D
相关产品推荐
相关产品推荐

