通過查證,錯誤原因有以下幾點:
1.此類的id值為空白(沒有set該值 或 手工產生的值為null)
2.對應的id配置類型以及長度不正確
3.外部索引鍵關聯組態管理的多對一映射,傳遞的對象為null(導致手工set時為null)
ssh 中 看下 產生的實體類是不是少寫了
代碼如下 |
複製代碼 |
<class name="Entity " table="table1"> <id name="id" column="id"> <generator class="native"/>看下 實體類有沒有 少寫了 </id> <property name="uid" column="uid"/> </class> |
註解 的看這邊
代碼如下 |
複製代碼 |
@Id @GeneratedValue(strategy = IDENTITY) 這個有沒有少寫 @Column(name = "id", unique = true, nullable = false, insertable = true, updatable = true) public Long getId() { return this.id; } |
看看資料庫表中的 id 是不是自增長類型,把<generator class="assigned" />中assigned改為increment
Oracle資料庫:
在Hibernate的對應檔中,需要聲明主鍵是根據序列自動產生的。
代碼如下 |
複製代碼 |
<id name="numitemid" type="java.lang.Integer"> <column name="NUMITEMID" precision="20" scale="0" /> <generator class="sequence"> <param name="sequence">SEQ_TL_COMMON_ITEM</param> </generator> </id>
|
SQLite資料庫:
在Hibernate的對應檔中,需要聲明主鍵是自增的。
代碼如下 |
複製代碼 |
<id name="numitemid" type="java.lang.Integer"> <column name="NUMITEMID" precision="20" scale="0" /> <generator class="increment"></generator> </id> |