我在我的數據庫中設置了Identity(1,1)的列,我無法獲得hibernate註釋的工作。我嘗試創建新記錄時遇到錯誤。休眠自動遞增不工作
在我的實體中,我有以下幾點。
@Entity
@Table(schema="dbo", name="MemberSelectedOptions")
public class MemberSelectedOption extends BampiEntity implements Serializable {
@Embeddable
public static class MSOPK implements Serializable {
private static final long serialVersionUID = 1L;
@Column(name="SourceApplication")
String sourceApplication;
@Column(name="GroupId")
String groupId;
@Column(name="MemberId")
String memberId;
@Column(name="OptionId")
int optionId;
@GeneratedValue(strategy=GenerationType.IDENTITY, generator="native")
@Column(name="SeqNo", unique=true, nullable=false)
BigDecimal seqNo;
//Getters and setters here...
}
private static final long serialVersionUID = 1L;
@EmbeddedId
MSOPK pk = new MSOPK();
@Column(name="OptionStatusCd")
String optionStatusCd;
@Column(name="EffectiveDate")
Date effectiveDate;
@Column(name="TermDate")
Date termDate;
@Column(name="SelectionStatusDate")
Date selectionStatusDate;
@Column(name="SysLstUpdtUserId")
String sysLstUpdtUserId = Globals.WS_USER_ID;;
@Column(name="SysLstTrxDtm")
Date sysLstTrxDtm = new Date();
@OneToMany(mappedBy="option")
List<MemberSelectedVariable> variables =
new ArrayList<MemberSelectedVariable>();
//More Getters and setters here...
}
但是,當我嘗試添加新記錄時出現以下錯誤。
當IDENTITY_INSERT設置爲OFF時,無法在表'MemberSelectedOptions'中爲標識列插入顯式值。我不想將IDENTIY_INSERT設置爲ON,因爲我想讓db中的標識列管理這些值。
運行的SQL如下;在那裏你可以清楚地看到插入。
insert into dbo.MemberSelectedOptions
(OptionStatusCd,
EffectiveDate,
TermDate,
SelectionStatusDate,
SysLstUpdtUserId,
SysLstTrxDtm,
SourceApplication,
GroupId,
MemberId,
OptionId,
SeqNo)
values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
我在想什麼?
我已更新帖子以包含整個文件,沒有getters/setters。 – dharga 2010-05-25 18:08:04
我想,我們應該讓Hibernate不要插入'SeqNo'。將'SeqNo' getter標記爲'@ Id'並且不使用'generator'會有所幫助。 – 2010-05-25 19:15:30
我試過設置insertable = false和updateble = false,但是沒有幫助。 – dharga 2010-05-25 19:25:28