我在我的数据库中设置了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