Стратегия именования пользовательских последовательностей в Java Spring Boot и Hibernate 6JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Стратегия именования пользовательских последовательностей в Java Spring Boot и Hibernate 6

Сообщение Anonymous »

Hibernate 6 имеет стратегию именования последовательностей для добавления суфикса: _SEQ
Как можно изменить суффикс с _SEQ на $SEQ?
Я создал собственную стратегию именования, добавив суффикс $SEQ, чтобы имя последовательности было $SEQ.

Код: Выделить всё

public class CustomImplicitDatabaseObjectNamingStrategy
implements ImplicitDatabaseObjectNamingStrategy {
public static final String STRATEGY_NAME = "custom";

@Override
public QualifiedName determineSequenceName(
Identifier catalogName,
Identifier shemaName,
Map configValues,
ServiceRegistry serviceRegistry) {
final JdbcEnvironment jdbcEnvironment = serviceRegistry.getService(JdbcEnvironment.class);

String entityName = (String) configValues.get("jpa_entity_name");
String seqName = entityName + "$SEQ";
System.out.println("seqName " + seqName);

return new QualifiedSequenceName(
catalogName, shemaName, jdbcEnvironment.getIdentifierHelper().toIdentifier(seqName, false));
}

@Override
public QualifiedName determineTableName(
Identifier catalogName,
Identifier schemaName,
Map configValues,
ServiceRegistry serviceRegistry) {

return null;
}
}
Эта специальная стратегия именования упоминается в свойствах следующим образом:

Код: Выделить всё

spring.jpa.properties.hibernate.id.db_structure_naming_strategy
Hibernate 6 имеет шаг приращения по умолчанию 50, но последовательность моей базы данных имеет только 1. Поэтому я попытался это изменить:

Код: Выделить всё

  @Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "my_entity_seq")
@SequenceGenerator(name = "my_entity_seq", allocationSize = 1)
@Column(name = "id")
Long id;
Это не работает, поскольку к имени последовательности добавляются кавычки:
выберите «MyEntityName$SEQ».nextval
Как я могу запретить добавление кавычек?
или есть лучший способ изменить суффикс?

Подробнее здесь: https://stackoverflow.com/questions/790 ... ibernate-6
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»