[ 
https://issues.apache.org/jira/browse/OPENJPA-1799?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Richard Zowalla resolved OPENJPA-1799.
--------------------------------------
    Resolution: Won't Fix

Closing as obsolete during backlog cleanup: 
ValueMetaDataImpl.getValueMappedByMetaData (lines 397-411) resolves the map key 
with ClassMetaData.getField, which includes inherited fields, so the 
'no-mapped-by' error points to the same broken superclass metadata as 1796. 
Please reopen if this still happens with OpenJPA 4.x.

> Exception thrown if @Mapkey refers to a field which belongs superclass
> ----------------------------------------------------------------------
>
>                 Key: OPENJPA-1799
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-1799
>             Project: OpenJPA
>          Issue Type: Bug
>    Affects Versions: 2.0.1
>            Reporter: Kai Feng Zhang
>            Priority: Major
>
> FriendDb entity has such a field:
>   @OneToMany(targetEntity = FriendPropertyDb.class, mappedBy = "friend")
>   @MapKey(name="type")
>   protected Map<String ListFieldDb> properties;
> ListFieldDb is superclass of FriendPropertyDb, and type is a field of 
> ListFieldDb.
> But then I get an exception saying:
> <openjpa-2.0.1-r422266:989424 fatal user error> 
> org.apache.openjpa.persistence.ArgumentException: 
> "org.apache.shindig.social.opensocial.jpa.FriendDb.properties<key:class 
> java.lang.String>" declared that it is mapped by "type", but that is a not a 
> field of the related type.
>       at 
> org.apache.openjpa.meta.ValueMetaDataImpl.getValueMappedByMetaData(ValueMetaDataImpl.java:329)
>       at 
> org.apache.openjpa.jdbc.meta.ValueMappingImpl.getValueMappedByMapping(ValueMappingImpl.java:121)
>       at 
> org.apache.openjpa.jdbc.meta.ValueMappingImpl.getColumns(ValueMappingImpl.java:130)
>       at 
> org.apache.openjpa.jdbc.meta.ValueMappingImpl.resolveMapping(ValueMappingImpl.java:518)
>       at 
> org.apache.openjpa.jdbc.meta.ValueMappingImpl.resolve(ValueMappingImpl.java:500)
>       at 
> org.apache.openjpa.jdbc.meta.FieldMapping.resolveMapping(FieldMapping.java:522)
>       at 
> org.apache.openjpa.jdbc.meta.FieldMapping.resolve(FieldMapping.java:461)
>       at 
> org.apache.openjpa.jdbc.meta.ClassMapping.resolveMapping(ClassMapping.java:853)
>       at 
> org.apache.openjpa.meta.ClassMetaData.resolve(ClassMetaData.java:1791)
>       at 
> org.apache.openjpa.meta.MetaDataRepository.processBuffer(MetaDataRepository.java:790)
>       at 
> org.apache.openjpa.meta.MetaDataRepository.resolveMapping(MetaDataRepository.java:751)
>       at 
> org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.java:631)
>       at 
> org.apache.openjpa.meta.MetaDataRepository.getMetaDataInternal(MetaDataRepository.java:385)
>       at 
> org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:358)
>       at 
> org.apache.openjpa.meta.MetaDataRepository.resolveAll(MetaDataRepository.java:1923)
>       at 
> org.apache.openjpa.meta.MetaDataRepository.getQueryMetaDataInternal(MetaDataRepository.java:1901)
>       at 
> org.apache.openjpa.meta.MetaDataRepository.getQueryMetaData(MetaDataRepository.java:1888)
>       at 
> org.apache.openjpa.persistence.EntityManagerImpl.createNamedQuery(EntityManagerImpl.java:1013)
>       at 
> org.apache.openjpa.persistence.EntityManagerImpl.createNamedQuery(EntityManagerImpl.java:100)
>       at 
> org.apache.shindig.social.opensocial.jpa.spi.PersonServiceDb.getPerson(PersonServiceDb.java:162)
>       at 
> org.apache.shindig.social.opensocial.service.PersonHandler.get(PersonHandler.java:83)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>       at java.lang.reflect.Method.invoke(Method.java:597)
>       at 
> org.apache.shindig.protocol.DefaultHandlerRegistry$MethodCaller.call(DefaultHandlerRegistry.java:483)
>       at 
> org.apache.shindig.protocol.DefaultHandlerRegistry$RestInvocationHandler.execute(DefaultHandlerRegistry.java:369)
>       at 
> org.apache.shindig.protocol.DefaultHandlerRegistry$RestInvocationWrapper.execute(DefaultHandlerRegistry.java:394)
>       at 
> org.apache.shindig.protocol.DataServiceServlet.handleSingleRequest(DataServiceServlet.java:162)
>       at 
> org.apache.shindig.protocol.DataServiceServlet.executeRequest(DataServiceServlet.java:111)
>       at 
> org.apache.shindig.protocol.DataServiceServlet.doGet(DataServiceServlet.java:54)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>       at 
> org.apache.shindig.auth.AuthenticationServletFilter.callChain(AuthenticationServletFilter.java:125)
>       at 
> org.apache.shindig.auth.AuthenticationServletFilter.doFilter(AuthenticationServletFilter.java:88)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>       at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
>       at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
>       at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
>       at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>       at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>       at 
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
>       at 
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
>       at 
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
>       at 
> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
>       at java.lang.Thread.run(Thread.java:619)



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

Reply via email to