问题描述
我需要从外部属性设置表名 @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 (将#修改为@)