В базе данных есть последовательность seq2. В своем классе-сущности назначил эту последовательность как генератор:
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_gen")
@SequenceGenerator(name = "seq_gen", sequenceName = "seq2")
private int id;
В базе данных в качестве генератора тоже вручную установил эту последовательность (до этого была стандартная инкрементация). Но вот проблема, при попытке добавить экземпляр класса в БД, вылетает исключение:
Исключение!org.hibernate.MappingException: Could not instantiate id generator [entity-name=models.User]
Exception in thread "main" java.lang.NullPointerException
at dao.UserDao.save(UserDao.java:18)
at services.UserService.saveUser(UserService.java:21)
at Main.main(Main.java:18)
Однако, если в СУБД написать это через INSERT, то все работает. Думал думал, поставил в классе обратно GenerationType.IDENTITY:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
Теперь все работает... но не так. Теперь записи добавляются, причем используется именно последовательность seq2, т.к. я ее в БД вручную изменил. Так вот, так ведь не должно быть? Если есть тип SEQUENCE, то почему для использования моей последовательности, мне надо использовать IDENTITY? Или это работает, только Hibernate самостоятельно создает БД по твоей сущности? Или я что-то делаю не так?
@Id
@SequenceGenerator(name = "seq2", sequenceName = "seq2", allocationSize = 1, initialValue = 10000)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq2")
// @Column(name = "id", unique = true, nullable = false, columnDefinition = "integer default nextval('seq2')")
private int id;
@Id
@SequenceGenerator(name = "RM_SEQ", sequenceName = "ROOM_SEQ", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "RM_SEQ")
@Column(name = "ID")
public long getId() {
return id;
}
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники