我正在尝试将对象持久化到数据库。不断获取“列ID无法接受空值错误”。我的对象看起来像这样:
@Entity public class TestTable { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Integer id = 0; @Column(nullable=false, length=256) private String data = ""; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getData() { return data; } public void setData(String data) { this.data = data; } }
我的持久功能:
public static synchronized boolean persistObject(Object obj){ boolean success = true; EntityManager em = null; EntityTransaction tx = null; try{ em = getEmf().createEntityManager(); tx = em.getTransaction(); tx.begin(); em.persist(obj); tx.commit(); } catch (Exception e){ success = false; } finally{ try{ em.close(); } catch(Exception e){ //nothing } } return success; }
您可以使用GenerationType.TABLE。这样,jpa将序列表用于ID分配,您可能永远不需要生成序列或自动递增值或触发可移植性的触发器。
另请注意,在java中,int类型默认使用0初始化,因此您也可以摆脱它。