]
Steven Hawkins commented on TEIID-5803:
---------------------------------------
I updated the Olingo master with Steve's PR now.
Thanks, Ramesh. Now I'll update the Teiid side with appropriate handling.
One further note on the discussion. I will also need to be able to
address updates of an existing entity via a navigation binding. I have not tried yet if
this does work. From your previous comments I assume you will interpret this issue here
for updates on an item via navigation property and the OLINGO one for create? Is my
interpretation correct?
This issue and the associated olingo issue so far are only to address the issue of
creating an entity via a navigation binding, such that it will also be added to that
navigation. If there are other scenarios they may need additional issues.
Seems to be not possible to POST a new entity via a navigation
property to a collection
---------------------------------------------------------------------------------------
Key: TEIID-5803
URL:
https://issues.jboss.org/browse/TEIID-5803
Project: Teiid
Issue Type: Bug
Components: OData
Reporter: Christoph John
Assignee: Steven Hawkins
Priority: Major
Hello Steven,
I am currently trying to post/create an entity in a collection via a relative binding
path. Unfortunately, I always get an error saying
{"error":{"code":null,"message":"HTTP method
'POST' not allowed for this resource."}}
I have bound the root view to .../Account(1) from which I have a navigation property to
the relevant collection. Currently I have trouble to post to collections via a navigation
path.
As far as I understood from
http://docs.oasis-open.org/odata/odata/v4.01/csprd04/part1-protocol/odata...
chapter 11.4.2 this should work according to my tries below.
Might you tell me if my path via the navigation property should work for post requests or
what I am doing wrong?
Directly writing to the collection is fine, i.e. something like the following:
curl --user sap:sap -i -X POST -H 'Content-Type:
application/json;charset=UTF-8;IEEE754Compatible=true' -d
'{"fkProfile":"1","idCode":null,"lc":"de","product_name":"A
Product","brands":"A
brand","energy_100g":2259,"carbohydrates_100g":60.08,"sugars_100g":10.1,"proteins_100g":24.03,"fat_100g":15.89,"saturated_fat_100g":10.0,"salt_100g":1.0}'
http://localhost:18080/odata4/svc/my_nutri_diary/UserDefinedProducts
and a GET request via a navigation property path (given below) also works, but a path via
a navigation property does not work when using the path in a POST request. I.e. when
going via the navigation property. Example:
curl --user sap:sap -i -X POST -H 'Content-Type:
application/json;charset=UTF-8;IEEE754Compatible=true' -d
'{"fkProfile":"1","idCode":null,"lc":"de","product_name":"A
Product","brands":"A
brand","energy_100g":2259,"carbohydrates_100g":60.08,"sugars_100g":10.1,"proteins_100g":24.03,"fat_100g":15.89,"saturated_fat_100g":10.0,"salt_100g":1.0}'
http://localhost:18080/odata4/svc/my_nutri_diary/Account\(1\)/UserDefined...
Here you find the backend metadata. They show that
UserDefinedProducts_fKUserDefinedProductToAccount is simply a navigaton path from
Account(xxx) to the UserDefinedProducts collection.
https://ecubed-solutions.ddnss.de/odata4/svc/my_nutri_diary/$metadata
user: sap
password: sap
Thanks a lot for your help!
Note: I am currently trying to add data via a navigation property path because my
frontend library sapui5 only caches and syncs data queried via a single context binding.
Hence, to be consistent via all views in my app which bind to the odata model, I need to
use only one absolute binding and have to query/update other contexts via relative binding
paths from this single absolute path, to allow for all frontend views to maintain data
consistency