【发布时间】:2014-11-25 05:15:29
【问题描述】:
我有一些代码
@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();
}
}
}
在我看来,id 是 7,但不是 NULL。 而“java”则不然。问题出在哪里?
【问题讨论】:
-
首先,我想您的代码块缺少以下行:
User stock2 = new User();。这将导致您期望的 id 是 506 而不是 7(因为stock2.setId(506l);)。对吗?