В базе данных есть последовательность 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;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Видел много примеров, но все еще не совсем понимаю, в каких случаях пишется эта аннотацияВот допустим у нас сущности User и Book, между ними отношения...
Пишу калькулятор, в который можно вбивать математические выражения любой длины, после чего пользователь нажимает клавишу "=" и калькулятор...
Пример : на факультете 5 кафедр, где