在我的SAPUI5-Application中我得到了以下函数来获取数据并在我的HANA DB中创建一个条目:
onCreateNewCustomer: function(){
var oEntry = {};
oEntry.NAME = this.byId("name").getValue();
oEntry.CITY = this.byId("city").getValue();
oEntry.PHONE = this.byId("phone").getValue();
oEntry.ID = this.byId("id").getValue();
// Post data to the server
this.getOwnerComponent().getModel("CustomerModel").create("/Customer", oEntry, null);
this.byId("createCustomer").close();
//location.reload();
}
创建过程有效,我的条目也会保存。在下一步中,我希望以这种方式在HANA中实现我的表,条目的ID将自动增加,因此用户不必输入它。我使用以下命令创建我的表:
create column table TABLE
(ID bigint not null primary key generated by default as IDENTITY,
FIRSTNAME nvarchar(30))
有效,表已创建。现在的问题是,如果我使用上面的代码而不提供ID,控制台会记录以下错误:
发生以下问题:HTTP请求失败400,错误请求,序列化资源缺少成员ID'。
该条目未保存在我的数据库中。如果我在HANA Workbench中执行以下SQL语句而未提供ID,则可以:
insert into TABLE (FIRSTNAME) values (‘David’);
insert into TABLE (FIRSTNAME) values (‘Mike’);
insert into TABLE (FIRSTNAME) values (‘Bobby’);
所以我在google上做了一些搜索,但没有找到一个如何做到这一点的正确解决方案。我的目标是保存条目,ID由我的HANA DB提供,而不是从我的SAPUI5应用程序提供。
答案 0 :(得分:0)
您是否尝试通过注释下面的代码来创建新记录,例如?
oEntry.ID = this.byId("id").getValue();
使用标识字段,如果您提供值,则必须明确标识您要提供的列值。否则,只需省略INSERT命令中的列名和值。
答案 1 :(得分:0)
可能您正在使用不支持自动增量的ODataV2 XSODATA实现。此处可能的解决方案是使用数据库序列,然后通过单独的请求从数据库序列中获取值,并在OData create
语句中使用它。