最近寫的項目是用的hibernate,由於是第一次用,也出現了一些問題,網上也沒有查到相關的內容。廢話也不多說了,下面來看今天遇見的這個問題。
我們在寫項目的時候,經常會用到一些沒有主鍵的關系表,而hibernate呢必須給實體類指定主鍵。所以我們在實體類里面加入注解@Id就可以了
加入注解后,項目可以正常的啟動,但是在調用hibernate的save方法的時候會報一個could not extract ResultSet的錯誤。
這個錯誤出現的原因其實很簡單,因為jpa的save方法,在保存后會返回一個實體,因為沒有主鍵的原因,所以就導致了報了這個錯誤。
解決這個問題的方法就是,將@Id加到任何一個get方法的上面就行了
下面展示一下我的代碼
package com.tlgc.system.mvc.model.projectmanager; import org.hibernate.annotations.DynamicInsert; import org.hibernate.annotations.DynamicUpdate; import javax.persistence.*; @Entity @Table(name = "pm_role") @DynamicInsert(true) @DynamicUpdate(true) public class PmRole implements java.io.Serializable { private static final long serialVersionUID = -7509069780835660418L; private String roleId; private String pmId; private Integer type; @Id @Column(name = "role_id") public String getRoleId() { return roleId; } public void setRoleId(String roleId) { this.roleId = roleId; } @Column(name = "pm_id") public String getPmId() { return pmId; } public void setPmId(String pmId) { this.pmId = pmId; } @Column(name = "type") public Integer getType() { return type; } public void setType(Integer type) { this.type = type; } }