我想在我的OData V2服務中創建一個新條目。該集合稱爲「PatientSet」,條目類型爲「Patient」。我也想包含一個地址和我的新條目,這是一個關聯的實體類型。所以還有一個集合「AddressSet」。這兩個集合通過關聯連接。該協會是這樣的:深入插入與sap.ui.model.odata.v2.ODataModel
<Association Name="PatientAddress" sap:content-version="1"> <End Type="PatientService.Patient" Multiplicity="1" Role="FromRole_PatientAddress" /> <End Type="PatientService.Address" Multiplicity="*" Role="ToRole_PatientAddress" /> </Association>
現在我們已經想出瞭如何創建患者收集與相關的地址與包含XML有效載荷,看起來像這樣一個POST請求的新條目:
<?xml version="1.0" encoding="utf-8"?>
<entry xml:base="http://XXXXXX/sap/opu/odata/XXX/XXX/" xmlns="http://www.w3.org/2005/Atom" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices"> <id>http://XXXXXX/sap/opu/odata/XXX/XXX/PatientSet</id>
<title type="text">PatientSet</title>
<category term="PatientService.Patient" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>
<link href="PatientSet" rel="edit" title="Patient"/>
<link href="PatientSet/Addresses" rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Addresses" type="application/atom+xml;type=feed" title="Addresses">
<m:inline>
<feed xml:base="http://XXXXXX/sap/opu/odata/XXX/XXX/">
<id>http://XXXXXX/sap/opu/odata/XXX/XXX/PatientSet/Addresses</id>
<title type="text">AddressSet</title>
<author>
<name/>
</author>
<link href="PatientSet/Addresses" rel="self" title="AddressSet"/>
<entry>
<id>http://XXXXXX/sap/opu/odata/XXX/XXX/AddressSet</id>
<title type="text">AddressSet</title>
<category term="PatientService.Address" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>
<link href="AddressSet" rel="edit" title="Address"/>
<content type="application/xml">
<m:properties>
<d:Street>Am Kamp 13</d:Street>
<d:City>Sickte</d:City>
<d:PoBox/>
<d:ZIPCode>38173</d:ZIPCode>
<d:CountryISO>DE</d:CountryISO>
<d:AddressType>Home</d:AddressType>
</m:properties>
</content>
</entry>
</feed>
</m:inline>
</link>
<content type="application/xml">
<m:properties>
<d:Name m:type="PatientService.PersonName">
<d:Family>Schmitz</d:Family>
<d:First>Roswitha</d:First>
<d:Prefix/>
<d:Title>Frau</d:Title>
<d:Affix/>
</d:Name>
<d:Gender/>
<d:BirthDate>19330523</d:BirthDate>
<d:isActive>true</d:isActive>
<d:NationalityISO/>
<d:BirthCountryISO/>
<d:BirthPlace/>
<d:BirthName/>
<d:MPI_ID>mpi 1234</d:MPI_ID>
</m:properties>
</content>
</entry>
我POST請求的數據對象看起來像這樣的時刻:
var oData = {
"Name": {
"Family": familyName,
"First": firstName,
},
"NationalityISO": nationality,
"BirthCountryISO": birthCountry,
"BirthPlace": birthPlace
}
this.oModel.create("/PatientSet", oData, {success: function(result){alert(result)}, error: function(err){alert(err)}})
如何將我的模型的官方發展援助ta-object的方式,使我能夠同時發佈到PatientSet和AddressSet,同時考慮到兩個條目之間的關聯,換句話說,我該如何構建oData對象,使其能夠精確地生成XML -payload服務需要進行深入插入?
導航屬性如下所示: 「/ PatientSet('3373964')/地址」將帶我到鏈接的地址條目。令我困惑的是,我必須在查詢中包含實際的密鑰。在提交請求時我不知道密鑰,密鑰是在創建PatientSet中的條目時生成的。或者,oModel對象通過例如來處理這個問題。批量請求? – doktormatte
您不需要在這裏輸入密鑰,因爲您要用新地址創建一個新病人。 如果您在對象通過創建功能傳給你會發現的通話將被定向到網關的DPC_EXT類的方法如下: /IWBEP/IF_MGW_APPL_SRV_RUNTIME〜CREATE_DEEP_ENTITY 在這裏,你將需要實施/打電話給你深入插入邏輯。 – rpanneel