dha*_*rga 5 java database orm hibernate composite-key
我的数据库中有一列设置了Identity(1,1)的列,但无法获取休眠注释来工作。尝试创建新记录时出现错误。
就我而言,我有以下几点。
@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...
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试添加新记录时,出现以下错误。
当IDENTITY_INSERT设置为OFF时,无法为表'MemberSelectedOptions'中的标识列插入显式值。我不想将IDENTIY_INSERT设置为ON,因为我希望数据库中的identity列可以管理值。
运行的SQL如下:您可以在其中清楚看到插入物。
insert into dbo.MemberSelectedOptions
(OptionStatusCd,
EffectiveDate,
TermDate,
SelectionStatusDate,
SysLstUpdtUserId,
SysLstTrxDtm,
SourceApplication,
GroupId,
MemberId,
OptionId,
SeqNo)
values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
Run Code Online (Sandbox Code Playgroud)
我想念什么?
可能您需要标记您的字段@id而不指定generator属性。
如 Hibernate 注释 - 2.2.3.1 所示。生成标识符属性,下一个示例使用身份生成器:
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
public Long getId() { ... }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11009 次 |
| 最近记录: |