У меня есть некоторый код@Id в спящем режиме
@Entity
@Table(name = "USER")
public class User {
@Id
@Column(name = "id", nullable = false, unique = true)
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
Когда я пытаюсь добавить пользователя в таблицу, я ловлю
org.h2.jdbc.JdbcSQLException: NULL not allowed for column "ID"; SQL statement:
insert into USER (id, birthday, email, first_name, last_name, login, password, id_role) values (null, ?, ?, ?, ?, ?, ?, ?) [23502-181]
Это мой код, чтобы добавить пользователя в БД
stock2.setBirthday(new Date(46));
stock2.setEmail("sss");
stock2.setFirstName("oleg");
stock2.setId(506l);
stock2.setLastName("gubov");
stock2.setLogin("OP");
stock2.setPassword("1");
Role role2 = new Role();
role2.setName("poil");
role2.setId(7l);
stock2.setRole(role2);
HibernateUserDao dao = new HibernateUserDao();
System.out.println(stock2.getId() + " -----------before");
dao.create(stock2);
и код объекта:
public void create(User user) {
Session session = null;
try {
session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
session.save(user);
session.getTransaction().commit();
} catch (Exception e) {
session.getTransaction().rollback();
throw e;
} finally {
if (session != null && session.isOpen()) {
session.close();
}
}
}
На мой взгляд, идентификатор равен 7, но не NULL. И «ява» думает иначе. Где может быть проблема?
Во-первых, я полагаю, что в вашем блоке кода отсутствует следующая строка: 'User stock2 = new User();'. Это приведет к тому, что идентификатор, который вы ожидаете, равен 506, а не 7 (из-за 'stock2.setId (506l);'). Правильно ли это? – cooltea