微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何传递`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 举报,一经查实,本站将立刻删除。