[ https://issues.apache.org/jira/browse/OLINGO-1467?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Mahdi Ansari updated OLINGO-1467: --------------------------------- Description: I have made an OData server with Spring-boot, JPA, Hibernate and Olingo2. There is a *{{ManyToMany}}* relationship between {{User}} and {{Role}} entities. {code:java} // In User entity @ManyToMany(fetch = FetchType.EAGER, cascade = {CascadeType.PERSIST, CascadeType.MERGE}) @JoinTable(name = "user_authority", joinColumns = {@JoinColumn(name = "user_id", referencedColumnName = "user_id")}, inverseJoinColumns = {@JoinColumn(name = "role_id", referencedColumnName = "role_id")}) private Set<Role> roles = new HashSet<>();{code} and {code:java} // In Role entity //bi-directional many-to-many association to User @ManyToMany(mappedBy="roles", fetch = FetchType.LAZY) @JsonIgnore private Set<User> users = new HashSet<>();{code} I am using Olingo {{V2.0.11}} and spring boot version {{2.3.0.RELEASE}}. When I try to see the list of Roles in my odata endpoint I can easily do it, however when I try to see list of Users like: {code:java} http://localhost:9090/odata.svc/UserSet{code} Then I get the following error: {code:java} <?xml version='1.0' encoding='UTF-8'?> <error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"> <code/> <message xml:lang="en">Missing message for key 'org.apache.olingo.odata2.api.edm.EdmSimpleTypeException.PROPERTY_VALUE_FACETS_NOT_MATCHED'!</message> </error>{code} The interesting point is if I only retrieve one User like: {code:java} http://localhost:9090/odata.svc/UserSet(1)?$format=json&$expand=Roles {code} Then I can see the result, even as you saw I could expand the Roles relationship: {code:java} { "d": { "__metadata": { "id": "http://localhost:9090/odata.svc/UserSet(1L)", "uri": "http://localhost:9090/odata.svc/UserSet(1L)", "type": "me.cimply.User" }, "active": true, "createdAt": "/Date(1594283306126)/", "email": "a...@gmail.com", "emailVerified": true, "firstName": "Guest", "id": "1", "lastName": " ", "photoContent": null, "updatedAt": "/Date(1594283306126)/", "username": "a...@gmail.com", "Answers": { "__deferred": { "uri": "http://localhost:9090/odata.svc/UserSet(1L)/Answers" } }, "Roles": { "results": [ { "__metadata": { "id": "http://localhost:9090/odata.svc/Roles(2L)", "uri": "http://localhost:9090/odata.svc/Roles(2L)", "type": "me.cimply.Role" }, "id": "2", "role": "ROLE_ADMIN", "users": { "__deferred": { "uri": "http://localhost:9090/odata.svc/Roles(2L)/users" } } }, { "__metadata": { "id": "http://localhost:9090/odata.svc/Roles(1L)", "uri": "http://localhost:9090/odata.svc/Roles(1L)", "type": "me.cimply.Role" }, "id": "1", "role": "ROLE_USER", "users": { "__deferred": { "uri": "http://localhost:9090/odata.svc/Roles(1L)/users" } } } ] }, "Surveys": { "__deferred": { "uri": "http://localhost:9090/odata.svc/UserSet(1L)/Surveys" } } } }{code} I am not sure the error comes from JPA or from Olingo. Anyone else has similar experiences with Olingo V2 for defining ManyToMany relationship? was: I have made an OData server with Spring-boot, JPA, Hibernate and Olingo2. There is a *{{ManyToMany}}* relationship between {{User}} and {{Role}} entities. {code:java} // In User entity @ManyToMany(fetch = FetchType.EAGER, cascade = {CascadeType.PERSIST, CascadeType.MERGE}) @JoinTable(name = "user_authority", joinColumns = {@JoinColumn(name = "user_id", referencedColumnName = "user_id")}, inverseJoinColumns = {@JoinColumn(name = "role_id", referencedColumnName = "role_id")}) private Set<Role> roles = new HashSet<>();{code} and {code:java} // In Role entity //bi-directional many-to-many association to User @ManyToMany(mappedBy="roles", fetch = FetchType.LAZY) @JsonIgnore private Set<User> users = new HashSet<>();{code} I am using Olingo {{V2.0.11}} and spring boot version {{2.3.0.RELEASE}}. When I try to see the list of Roles in my odata endpoint I can easily do it, however when I try to see list of Users like: {code:java} http://localhost:9090/odata.svc/UserSet{code} Then I get the following error: {code:java} <?xml version='1.0' encoding='UTF-8'?> <error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"> <code/> <message xml:lang="en">Missing message for key 'org.apache.olingo.odata2.api.edm.EdmSimpleTypeException.PROPERTY_VALUE_FACETS_NOT_MATCHED'!</message> </error>{code} The interesting point is if I only retrieve one User like: {code:java} http://localhost:9090/odata.svc/UserSet(1)?$format=json&$expand=Roles {code} Then I can see the result, even as you saw I could expand the Roles relationship: {{{{ }}}} {{{}} {{ "d": {}} {{ "__metadata": }}{{{ "id": "http://localhost:9090/odata.svc/UserSet(1L)", "uri": "http://localhost:9090/odata.svc/UserSet(1L)", "type": "me.cimply.User" }}}{{,}} {{ "active": true,}} {{ "createdAt": "/Date(1594283306126)/",}} {{ "email": "a...@gmail.com",}} {{ "emailVerified": true,}} {{ "firstName": "Guest",}} {{ "id": "1",}} {{ "lastName": " ",}} {{ "photoContent": null,}} {{ "updatedAt": "/Date(1594283306126)/",}} {{ "username": "a...@gmail.com",}} {{ "Answers": {}} {{ "__deferred": }}{{{ "uri": "http://localhost:9090/odata.svc/UserSet(1L)/Answers" }}}{{ },}} {{ "Roles": {}} {{ "results": [}} {{ {}} {{ "__metadata": }}{{{ "id": "http://localhost:9090/odata.svc/Roles(2L)", "uri": "http://localhost:9090/odata.svc/Roles(2L)", "type": "me.cimply.Role" }}}{{,}} {{ "id": "2",}} {{ "role": "ROLE_ADMIN",}} {{ "users": {}} {{ "__deferred": }}{{{ "uri": "http://localhost:9090/odata.svc/Roles(2L)/users" }}}{{ }}} {{ },}} {{ {}} {{ "__metadata": }}{{{ "id": "http://localhost:9090/odata.svc/Roles(1L)", "uri": "http://localhost:9090/odata.svc/Roles(1L)", "type": "me.cimply.Role" }}}{{,}} {{ "id": "1",}} {{ "role": "ROLE_USER",}} {{ "users": {}} {{ "__deferred": }}{{{ "uri": "http://localhost:9090/odata.svc/Roles(1L)/users" }}}{{ }}} {{ }}} {{ ]}} {{ },}} {{ "Surveys": {}} {{ "__deferred": }}{{{ "uri": "http://localhost:9090/odata.svc/UserSet(1L)/Surveys" }}}{{ }}} {{ }}} {{ }}} {{ {{ }}}} I am not sure the error comes from JPA or from Olingo. Anyone else has similar experiences with Olingo V2 for defining ManyToMany relationship? > Olingo V2 makes exception on entities with ManyToMany relationships > ------------------------------------------------------------------- > > Key: OLINGO-1467 > URL: https://issues.apache.org/jira/browse/OLINGO-1467 > Project: Olingo > Issue Type: Bug > Components: odata2-jpa > Affects Versions: V2 2.0.11 > Environment: Spring-boot, Hibernate > Reporter: Mahdi Ansari > Priority: Major > > I have made an OData server with Spring-boot, JPA, Hibernate and Olingo2. > There is a *{{ManyToMany}}* relationship between {{User}} and {{Role}} > entities. > {code:java} > // In User entity > @ManyToMany(fetch = FetchType.EAGER, cascade = {CascadeType.PERSIST, > CascadeType.MERGE}) > @JoinTable(name = "user_authority", > joinColumns = {@JoinColumn(name = "user_id", referencedColumnName = > "user_id")}, inverseJoinColumns = {@JoinColumn(name = "role_id", > referencedColumnName = "role_id")}) > private Set<Role> roles = new HashSet<>();{code} > and > {code:java} > // In Role entity > //bi-directional many-to-many association to User > @ManyToMany(mappedBy="roles", fetch = FetchType.LAZY) > @JsonIgnore > private Set<User> users = new HashSet<>();{code} > I am using Olingo {{V2.0.11}} and spring boot version {{2.3.0.RELEASE}}. > When I try to see the list of Roles in my odata endpoint I can easily do it, > however when I try to see list of Users like: > {code:java} > http://localhost:9090/odata.svc/UserSet{code} > Then I get the following error: > {code:java} > <?xml version='1.0' encoding='UTF-8'?> > <error > xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"> > <code/> > <message xml:lang="en">Missing message for key > 'org.apache.olingo.odata2.api.edm.EdmSimpleTypeException.PROPERTY_VALUE_FACETS_NOT_MATCHED'!</message> > > </error>{code} > The interesting point is if I only retrieve one User like: > {code:java} > http://localhost:9090/odata.svc/UserSet(1)?$format=json&$expand=Roles {code} > Then I can see the result, even as you saw I could expand the Roles > relationship: > > > > {code:java} > { "d": { "__metadata": { "id": > "http://localhost:9090/odata.svc/UserSet(1L)", "uri": > "http://localhost:9090/odata.svc/UserSet(1L)", "type": > "me.cimply.User" }, "active": true, "createdAt": > "/Date(1594283306126)/", "email": "a...@gmail.com", > "emailVerified": true, "firstName": "Guest", "id": "1", > "lastName": " ", "photoContent": null, "updatedAt": > "/Date(1594283306126)/", "username": "a...@gmail.com", > "Answers": { "__deferred": { "uri": > "http://localhost:9090/odata.svc/UserSet(1L)/Answers" } > }, "Roles": { "results": [ { > "__metadata": { "id": > "http://localhost:9090/odata.svc/Roles(2L)", "uri": > "http://localhost:9090/odata.svc/Roles(2L)", "type": > "me.cimply.Role" }, "id": "2", > "role": "ROLE_ADMIN", "users": { > "__deferred": { "uri": > "http://localhost:9090/odata.svc/Roles(2L)/users" } > } }, { > "__metadata": { "id": > "http://localhost:9090/odata.svc/Roles(1L)", "uri": > "http://localhost:9090/odata.svc/Roles(1L)", "type": > "me.cimply.Role" }, "id": "1", > "role": "ROLE_USER", "users": { > "__deferred": { "uri": > "http://localhost:9090/odata.svc/Roles(1L)/users" } > } } ] }, > "Surveys": { "__deferred": { "uri": > "http://localhost:9090/odata.svc/UserSet(1L)/Surveys" } } > } }{code} > > > I am not sure the error comes from JPA or from Olingo. Anyone else has > similar experiences with Olingo V2 for defining ManyToMany relationship? -- This message was sent by Atlassian Jira (v8.3.4#803005)