[ 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: {{ }} {{}} { "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? 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: {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? > 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: > {{ }} > {{}} > { > "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? -- This message was sent by Atlassian Jira (v8.3.4#803005)