Patrick Haller created OLINGO-1109:
--------------------------------------
Summary: JPA silently dropping navigation properties if not found
Key: OLINGO-1109
URL: https://issues.apache.org/jira/browse/OLINGO-1109
Project: Olingo
Issue Type: Improvement
Components: odata2-jpa
Affects Versions: V2 2.0.8
Reporter: Patrick Haller
We encountered an issue when creating a ProjectCost record, directly to be
associated with its parent Project by setting a navigation property. The
information encoded in { '__metadata': { uri: 'xyz' } } was correctly parsed in
the Olingo stack, but in
{{JPALink.create() #174}}, the {{targetJPAEntity}} could not be resolved as the
value 'xyz' was indeed wrong. The created data in persistence was missing the
link to the parent entity, but the error went unnoticed as no exception was
thrown.
I would suggest that {{JPALink.create}} should also {{throw
ODataJPARuntimeException.throwException(ODataJPARuntimeException.RESOURCE_X_NOT_FOUND}}
like {{JPALink.delete}}. It seems that {{JPALink.modifyLink}} is also
intentionally ignoring if the target entity cannot be found.
Not sure what behavior the OData specification documents here, but data loss
should not go unnoticed, I think.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)