我有一个实体,表名为"交易";。当使用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