Генератор последовательности недоступен для дочернего класса (сущности) в некоторых случаях - PullRequest
0 голосов
/ 03 января 2019

Я успешно определил генератор последовательности с помощью аннотаций в отношении наследования, примерно так:

@MappedSuperclass
public class DomainObject {
    @Id
    @Column( columnDefinition = "serial" )
    @GeneratedValue( generator = "id_sequence", strategy = GenerationType.IDENTITY )
    private long id = 0;
}

@Entity
@Table( name = "user" )
@SequenceGenerator( name = "id_sequence", sequenceName = "user_id_seq" )
public class User extends DomainObject {
}

В этом примере генератор последовательности класса User находит id_sequence из аннотации «Сгенерированное значение» в DomainObject.

Однако, если я сделаю DomainObject абстрактным классом и поместу его в другую зависимость (все остальное остается неизменным), я получу исключение:

org.hibernate.AnnotationException: Unknown Id.generator: id_sequence

В измененной версииЗависимость DomainObject находится в пути @ComponentScan, поэтому я не уверен, почему это не работает.Есть мысли?

1 Ответ

0 голосов
/ 04 января 2019

Почему бы вам не сделать это:

@MappedSuperclass
public abstract class DomainObject {
   @Id
   @Column( columnDefinition = "serial" )
   @SequenceGenerator( name = "id_sequence", sequenceName = "user_id_seq" )
   @GeneratedValue( generator = "id_sequence", strategy = GenerationType.IDENTITY )
   private long id = 0;

}

@Entity
@Table( name = "user" )
public class User extends DomainObject {
}

Я выполнил эту конфигурацию в других проектах с успехом ... о том, что я не нашел аннотированные классы,убедитесь, что DomainObject находится в пути к классу и User сущность действительно обнаружена весной ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...