在hibernate中为同一实体的MySQL和SQL server配置diff表名



我有一个实体,表名为"交易";。当使用spring-orm和hibernate创建连接时,在启动时它成功地在MySQL中创建了表;交易;SQL server中的一个关键字,它在启动时失败。我无法更改代码中的表名,因为有很多连锁反应。因此,有一种方法,我可以在java中将表名定义为Transaction,并以这样一种方式拦截或配置,即hibernate在连接到SQL server时转义关键字并将其查询为";[交易]";(使用[]逃离(

您可以使用本文中解释的命名策略:https://www.baeldung.com/hibernate-naming-strategy

public class CustomPhysicalNamingStrategy implements PhysicalNamingStrategy {
@Override
public Identifier toPhysicalTableName(final Identifier identifier, final JdbcEnvironment jdbcEnv) {
return Identifier.toIdentifier(**your table name**);
}
// Other methods

您可以尝试以下方法之一:

@Table(name = "`Transaction`");
@Table(name = ""Transaction"") 

或者通过设置属性:

hibernate.auto_quote_keyword=true

最新更新