Hibernate命名策略更改表名

我对hibernate(5.1版)的命名策略有些困惑-即它更改了我的表名,我想避免这种情况。另外-

spring.jpa.hibernate.naming_strategy根据intelij似乎已弃用,但我找不到正确配置它的(另一种)方法。

我在application.properties中具有以下配置:

spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.EJB3NamingStrategy

spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect

spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true

spring.jpa.properties.hibernate.current_session_context_class=thread

如前所述,第一个被标记为已练习。

现在我有一个实体:

@Entity

@Table(name = "usaUploadTable", schema = "usertable201", catalog = "")

public class UsaUploadTable {

....

}

表格名称是类似@Table(name = "")usaUploadTable 中的名称。

现在,当我运行我的应用程序时,我得到

表’usertable201.usa_upload_table’不存在

这是正确的-它的名字并不像hibernate改变它的方式。

如何使hibernate状态正确使用我的表名?

编辑:

我也尝试过

DefaultNamingStrategy

ImprovedNamingStrategy

他们都改变了

版本:

spring-boot-1.4.0.RELEASE

hibernate 5.1

javax-transaction-api 1.2

hibernate-validator 5.2.4

javassist 3.20

回答:

问题出在spring-

boot-1.4上-似乎他们已经更改了属性(或其他属性),我现在找到了这个答案EnhancedNamingStrategy不再在Hibernate

5中工作,但仍然无法正确解决。因此,我对代码进行了一些更改,以不使用下划线方法并扩展新引入的类SpringPhysicalNamingStrategy

package com.foo;

import org.hibernate.boot.model.naming.Identifier;

import org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl;

import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment;

import java.io.Serializable;

import java.util.Locale;

public class RealNamingStrategyImpl extends org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy implements Serializable {

public static final PhysicalNamingStrategyImpl INSTANCE = new PhysicalNamingStrategyImpl();

@Override

public Identifier toPhysicalTableName(Identifier name, JdbcEnvironment context) {

return new Identifier(name.getText(), name.isQuoted());

}

@Override

public Identifier toPhysicalColumnName(Identifier name, JdbcEnvironment context) {

return new Identifier(name.getText(), name.isQuoted());

}

}

application.properties我已将不赞成使用的行更改为

spring.jpa.properties.hibernate.physical_naming_strategy=<package>.RealNamingStrategyImpl

现在,它完全使用表和列名,就像我在实体文件中使用的一样。

以上是 Hibernate命名策略更改表名 的全部内容, 来源链接: utcz.com/qa/419087.html

回到顶部