]
Steven Hawkins commented on TEIID-5803:
---------------------------------------
See TEIID-5818 - we are making the core Teiid build completely free of wildfly concerns by
default. For now once you have built Teiid, then go into the wildfly directory and run
the wildfly build from there. This effort is not complete yet, so things may change -
such as new maven profiles or even a new repository location for teiid-wildfly.
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
Fix For: 13.0
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