Вы можете использовать hibernate.globally_quoted_identifiers
или hibernate.keyword_auto_quoting_enabled
.keyword_auto_quoting_enabled
автоматически добавляет кавычки для зарезервированных ключевых слов.
но в моем случае я использовал определения столбцов.Таким образом, hibernates пытался добавить цитаты к типам данных.Например, "BOOLEAN"
или "UUID"
в postgresql.Вот почему я изменил физическую стратегию именования.
hibernate.naming.physical-strategy = com.mypackage.MyCustomPhysicalNamingStrategyImpl
здесь приведен пример класса стратегии именования.
public class WentsyPhysicalNamingStrategyImpl implements PhysicalNamingStrategy, Serializable {
public static final WentsyPhysicalNamingStrategyImpl INSTANCE = new WentsyPhysicalNamingStrategyImpl();
@Override
public Identifier toPhysicalCatalogName(final Identifier name, final JdbcEnvironment context) {
return new Identifier(name.getText(), true);
}
@Override
public Identifier toPhysicalSchemaName(final Identifier name, final JdbcEnvironment context) {
return new Identifier(name.getText(), true);
}
@Override
public Identifier toPhysicalTableName(final Identifier name, final JdbcEnvironment context) {
return new Identifier(name.getText(), true);
}
@Override
public Identifier toPhysicalSequenceName(final Identifier name, final JdbcEnvironment context) {
return new Identifier(name.getText(), true);
}
@Override
public Identifier toPhysicalColumnName(final Identifier name, final JdbcEnvironment context) {
return new Identifier(name.getText(), true);
}
}
Hibernate не будет изменять определения столбцов, но оставит имена таблиц и столбцов какis.
Пример объекта:
@Data
@Entity
@Table(name = "CHAT")
public class Chat {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID", nullable = false)
private long id;
@Column(name = "UUID", columnDefinition = "UUID", nullable = false, length = 16)
private UUID uuid;
@Column(name = "NAME", length = 16)
private String name;
}
Имена будут такими, как есть:
CHAT
------------
ID
UUID
NAME
Обновление: Hibernate 5.2 имеет свойство GLOBALLY_QUOTED_IDENTIFIERS_SKIP_COLUMN_DEFINITIONS
, которое является именно тем, что я хочу.