Можно ли использовать генератор, реализующий OnExecutionGenerator, с метааннотацией @IdGeneratorType? Кажется, мне не хватает какой-то конфигурации, поскольку hibernate генерирует правильный SQL для вставок, но не создает правильный DDL для моей таблицы.
У меня есть собственный генератор, расширяющий IdentityGenerator , который реализует OnExecutionGenerator:
Код: Выделить всё
public class MyIdGeneratorImpl extends IdentityGenerator {}
Затем генератор используется с @IdGeneratorType
Код: Выделить всё
@Retention(RUNTIME)
@Target({METHOD, FIELD})
@IdGeneratorType(MyIdGeneratorImpl.class)
public @interface MyIdGenerator{}
Наконец, @IdGeneratorType применяется к столбцу идентификатора абстрактного корневого объекта.
Код: Выделить всё
public abstract class AbstractEntity {
@Id
@MyIdGenerator
@Column(name = "Id")
private Long id;
}
Сгенерированный DDL спящего режима:
Код: Выделить всё
Hibernate:
create table MY_TABLE(
Column_1 numeric(22,10),
Column_2 numeric(22,10),
Id bigint not null,
primary key (ID_)
)
Сгенерированная вставка SQL для спящего режима:
Код: Выделить всё
insert into MY_TABLE (Column_1,Column_2,Id) values (?,?,default)
Эта вставка вызывает нарушение ограничения NULL для идентификатора столбца. Мой вопрос: почему Id не помечен как bigint, сгенерированный по умолчанию как идентификатор, как это происходит при использовании GenericGenerator с собственной стратегией вместо @IdGeneratorType?
Подробнее здесь:
https://stackoverflow.com/questions/790 ... ngenerator