Переопределение активателя имущества Котлина приводит к двум JPA @Id

У меня есть три класса Котлина, представляющие объекты гиберната:

@MappedSuperclass abstract class Parent { @Id @GeneratedValue @Column(nullable=false) var id: Long? = null } @Entity class Child1 {} @Entity class Child2 { @Id @GeneratedValue @Column(nullable=false) override var id: Long? = null set(value) { super.id = value doSomething() } } 

Примечание. Мне нужно переопределить setter для id чтобы впоследствии вызвать doSomething . Так я уже делал это на Java раньше.

Он строит правильно, но Hibernate ему не нравится:

 A foreign key refering Child2 from ... has the wrong number of column. Should be 2. 

Из какой-то другой ошибки я подозреваю, что переопределенный id неправильно переопределен, а Hibernate дважды видит id столбцы – от Parent и Child2 .

Я случайно нашел решение:

 override var id: Long? get() = super.id set(value) { super.id = value doSomething() } 

Трюк:

  1. не присвоение значения полю
  2. создание геттера, связывающего super

Таким образом, Kotlin не создаст новое поле на сущности, и он просто переопределит getter / setter.