如何传递`hibernate.physical_naming_strategy`的内部类

问题描述

我需要从外部属性设置表名 @Table。我正在尝试这样做:

@Component
public class TableNameConfiguration {

    private String tableName;

    @Value("${table.tableName")
    public void setTableName(String tableName) {
        this.tableName = tableName;
    }

    @Component
    class PhysicalNamingImpl extends PhysicalNamingStrategyStandardImpl {
        @Autowired
        public PhysicalNamingImpl(){
                System.out.println("inner constructor: " + tableName);
        }

        private static final String TABLE_NAME = "PLACEHOLDER";

        @Override
        public Identifier toPhysicalTableName(Identifier name,JdbcEnvironment context) {
            if (TABLE_NAME.equals(name.toString())) {
                return new Identifier(tableName,name.isQuoted());
            }
            return super.toPhysicalTableName(name,context);
        }
    }
}

但我不确定如何在设置休眠属性 physial_naming_strategy 时放置内部类。我不断收到错误消息:Nosuchmethodexception class.<init>() PhysicalNamingImpl

properties.put("hibernate.physical_naming_strategy",TableNameConfiguration.PhysicalNamingImpl.class.getName());

我不确定我在这里遗漏了什么,或者是否有任何其他方法可以在休眠属性中提供内部类。

PS:让 PhysicalNamingImpl 成为内部类很重要,这样它才能访问外部类的属性

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)