Odata 如何从SAPUI5应用程序处理HANA中的自动递增ID?
在我的SAPUI5应用程序中,我获得了以下函数,该函数获取数据并在我的HANA DB中创建一个条目:Odata 如何从SAPUI5应用程序处理HANA中的自动递增ID?,odata,sapui5,hana,Odata,Sapui5,Hana,在我的SAPUI5应用程序中,我获得了以下函数,该函数获取数据并在我的HANA DB中创建一个条目: onCreateNewCustomer: function(){ var oEntry = {}; oEntry.NAME = this.byId("name").getValue(); oEntry.CITY = this.byId("city").getValue(); oEntry.PHONE = this.byId("pho
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请求失败,请求错误,序列化资源缺少成员“ID”的值
该条目未保存在my DB中。如果我在我的HANA工作台中执行以下SQL语句而不提供ID,则它可以工作:
insert into TABLE (FIRSTNAME) values (‘David’);
insert into TABLE (FIRSTNAME) values (‘Mike’);
insert into TABLE (FIRSTNAME) values (‘Bobby’);
所以我在谷歌上做了一些搜索,但没有找到一个合适的解决方案。我的目标是保存条目,由HANA DB提供ID,而不从SAPUI5应用程序提供ID 您是否尝试通过注释下面的代码来创建新记录
oEntry.ID = this.byId("id").getValue();
对于标识字段,如果提供值,则必须明确标识提供的是列值。否则,只需从INSERT命令中省略COLUMN名称和值。可能您使用的是不支持自动递增的ODataV2 XSODATA实现。这里可能的解决方案是使用数据库序列,然后通过单独的请求从中获取一个值,并在OData
create
语句中使用它