[ https://issues.apache.org/jira/browse/TAP5-1576?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13066729#comment-13066729 ]
Lenny Primak commented on TAP5-1576: ------------------------------------ Thank you - that works perfectly. > JPA Integration 5.3.0 with Primary Key Entity Classes Fails > ----------------------------------------------------------- > > Key: TAP5-1576 > URL: https://issues.apache.org/jira/browse/TAP5-1576 > Project: Tapestry 5 > Issue Type: Bug > Components: tapestry-jpa > Affects Versions: 5.3 > Reporter: Lenny Primak > Assignee: Igor Drobiazko > Fix For: 5.3 > > > Single Persistence Unit this time, Glassfish 3,1 > This used to work with Tynamo JPA as well. > Everything works until I introduce a primary key entity reference such as > this: > Thanks! > --------------- Main Entity -------------------------- > /** > * > * @author lprimak > */ > @Entity > @Table(name = "webstats") > @XmlRootElement > @NamedQueries( > { > ... > }) > @Data > public class WebStats implements Serializable > { > public String getDate() > { > return webStatsPK.getSdate(); > } > public String getStatisticName() > { > return webStatsPK.getSName(); > } > private static final long serialVersionUID = 1L; > @EmbeddedId > protected WebStatsPK webStatsPK; > @Basic(optional = false) > @NotNull > @Column(name = "nvisit") > private long nvisit; > @Column(name = "ncarrier") > private Long ncarrier; > @Column(name = "ntrack") > private Long ntrack; > @Column(name = "nadmin") > private Long nadmin; > @Column(name = "nother") > private Long nother; > public WebStats() > { > } > public WebStats(WebStatsPK webstatsPK) > { > this.webStatsPK = webstatsPK; > } > public WebStats(WebStatsPK webstatsPK, long nvisit) > { > this.webStatsPK = webstatsPK; > this.nvisit = nvisit; > } > public WebStats(String sdate, String sName) > { > this.webStatsPK = new WebStatsPK(sdate, sName); > } > } > --------------------- Embedded Primary Key ----------------------- > /** > * > * @author lprimak > */ > @Embeddable > @Data > public class WebStatsPK implements Serializable > { > /** > * > */ > private static final long serialVersionUID = 1L; > @Basic(optional = false) > @NotNull > @Size(min = 1, max = 8) > @Column(name = "sdate") > private String sdate; > @Basic(optional = false) > @NotNull > @Size(min = 1, max = 50) > @Column(name = "sName") > private String sName; > public WebStatsPK() > { > } > public WebStatsPK(String sdate, String sName) > { > this.sdate = sdate; > this.sName = sName; > } > } > ---------------------------------------------------- > Here is the error: > SEVERE: Error invoking service contribution method > org.apache.tapestry5.jpa.JpaModule.provideValueEncoders(MappedConfiguration, > boolean, EntityManagerSource, EntityManagerManager, TypeCoercer, > PropertyAccess, LoggerSource): The type [null] is not the expected > [EntityType] for the key class [class > com.flowlogix.website.entities.WebStatsPK]. > SEVERE: Operations trace: > SEVERE: [ 1] Constructing instance of page class > org.apache.tapestry5.corelib.pages.ExceptionReport > SEVERE: [ 2] Realizing service ValueEncoderSource > SEVERE: [ 3] Invoking > org.apache.tapestry5.services.TapestryModule.buildValueEncoderSource(Map, > InvalidationEventHub) (at TapestryModule.java:2337) > SEVERE: [ 4] Invoking > org.apache.tapestry5.services.TapestryModule.buildValueEncoderSource(Map, > InvalidationEventHub) (at TapestryModule.java:2337) > SEVERE: [ 5] Determining injection value for parameter #1 (java.util.Map) > SEVERE: [ 6] Collecting mapped configuration for service ValueEncoderSource > SEVERE: [ 7] Invoking method > org.apache.tapestry5.jpa.JpaModule.provideValueEncoders(MappedConfiguration, > boolean, EntityManagerSource, EntityManagerManager, TypeCoercer, > PropertyAccess, LoggerSource) (at JpaModule.java:180). > SEVERE: Construction of service ValueEncoderSource failed: Error invoking > service builder method > org.apache.tapestry5.services.TapestryModule.buildValueEncoderSource(Map, > InvalidationEventHub) (at TapestryModule.java:2337) (for service > 'ValueEncoderSource'): Error invoking service contribution method > org.apache.tapestry5.jpa.JpaModule.provideValueEncoders(MappedConfiguration, > boolean, EntityManagerSource, EntityManagerManager, TypeCoercer, > PropertyAccess, LoggerSource): The type [null] is not the expected > [EntityType] for the key class [class > com.flowlogix.website.entities.WebStatsPK]. > java.lang.RuntimeException: Error invoking service builder method > org.apache.tapestry5.services.TapestryModule.buildValueEncoderSource(Map, > InvalidationEventHub) (at TapestryModule.java:2337) (for service > 'ValueEncoderSource'): Error invoking service contribution method > org.apache.tapestry5.jpa.JpaModule.provideValueEncoders(MappedConfiguration, > boolean, EntityManagerSource, EntityManagerManager, TypeCoercer, > PropertyAccess, LoggerSource): The type [null] is not the expected > [EntityType] for the key class [class > com.flowlogix.website.entities.WebStatsPK]. > at > org.apache.tapestry5.ioc.internal.ServiceBuilderMethodInvoker$1.invoke(ServiceBuilderMethodInvoker.java:80) > at > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:65) > at > org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68) > at > org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1082) > at > org.apache.tapestry5.ioc.internal.ServiceBuilderMethodInvoker.createObject(ServiceBuilderMethodInvoker.java:52) > at > org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45) > at > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:65) > at > org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68) > at > org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1082) > at > org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49) > at > org.apache.tapestry5.ioc.internal.SingletonServiceLifecycle.createService(SingletonServiceLifecycle.java:29) > at > org.apache.tapestry5.ioc.internal.LifecycleWrappedServiceCreator.createObject(LifecycleWrappedServiceCreator.java:46) > at > org.apache.tapestry5.ioc.internal.AdvisorStackBuilder.createObject(AdvisorStackBuilder.java:63) > at > org.apache.tapestry5.ioc.internal.InterceptorStackBuilder.createObject(InterceptorStackBuilder.java:54) > at > org.apache.tapestry5.ioc.internal.RecursiveServiceCreationCheckWrapper.createObject(RecursiveServiceCreationCheckWrapper.java:60) > at > org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45) > at > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:65) > at > org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68) > at > org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1082) > at > org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49) > at > org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.obtainObjectFromCreator(JustInTimeObjectCreator.java:68) > at > org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.createObject(JustInTimeObjectCreator.java:56) > at $ValueEncoderSource_122fe8e54dee78bf.delegate(Unknown Source) > at $ValueEncoderSource_122fe8e54dee78bf.getValueEncoder(Unknown Source) > at > org.apache.tapestry5.internal.services.ComponentDefaultProviderImpl.defaultValueEncoder(ComponentDefaultProviderImpl.java:124) > at > $ComponentDefaultProvider_122fe8e54dee78c4.defaultValueEncoder(Unknown Source) > at > org.apache.tapestry5.corelib.components.Loop.defaultEncoder(Loop.java:311) > at > org.apache.tapestry5.corelib.components.Loop$Shim_122fe8e54dee795d.invoke(Unknown > Source) > at > org.apache.tapestry5.internal.plastic.MethodHandleImpl.invoke(MethodHandleImpl.java:48) > at > org.apache.tapestry5.internal.transform.BridgeClassTransformation$WrapMethodHandleAsMethodAccess.invoke(BridgeClassTransformation.java:84) > at > org.apache.tapestry5.internal.transform.ParameterWorker$InvokeParameterDefaultMethod.advise(ParameterWorker.java:109) > at > org.apache.tapestry5.internal.transform.BridgeClassTransformation$WrapMethodAdviceAsComponentMethodAdvice.advise(BridgeClassTransformation.java:348) > at > org.apache.tapestry5.internal.plastic.AbstractMethodInvocation.proceed(AbstractMethodInvocation.java:86) > at > org.apache.tapestry5.internal.transform.BridgeClassTransformation$WrapMethodAdviceAsComponentMethodAdvice$1.proceed(BridgeClassTransformation.java:362) > at > org.apache.tapestry5.internal.transform.ParameterWorker$InvokeLoadOnParmeterConduit.advise(ParameterWorker.java:132) > at > org.apache.tapestry5.internal.transform.BridgeClassTransformation$WrapMethodAdviceAsComponentMethodAdvice.advise(BridgeClassTransformation.java:348) > at > org.apache.tapestry5.internal.plastic.AbstractMethodInvocation.proceed(AbstractMethodInvocation.java:86) > at > org.apache.tapestry5.internal.transform.BridgeClassTransformation$WrapMethodAdviceAsComponentMethodAdvice$1.proceed(BridgeClassTransformation.java:362) > at > org.apache.tapestry5.internal.transform.ParameterWorker$InvokeLoadOnParmeterConduit.advise(ParameterWorker.java:132) > at > org.apache.tapestry5.internal.transform.BridgeClassTransformation$WrapMethodAdviceAsComponentMethodAdvice.advise(BridgeClassTransformation.java:348) > at > org.apache.tapestry5.internal.plastic.AbstractMethodInvocation.proceed(AbstractMethodInvocation.java:86) > at > org.apache.tapestry5.internal.transform.BridgeClassTransformation$WrapMethodAdviceAsComponentMethodAdvice$1.proceed(BridgeClassTransformation.java:362) > at > org.apache.tapestry5.internal.transform.ParameterWorker$InvokeParameterDefaultMethod.advise(ParameterWorker.java:115) > at > org.apache.tapestry5.internal.transform.BridgeClassTransformation$WrapMethodAdviceAsComponentMethodAdvice.advise(BridgeClassTransformation.java:348) > at > org.apache.tapestry5.internal.plastic.AbstractMethodInvocation.proceed(AbstractMethodInvocation.java:86) > at > org.apache.tapestry5.internal.transform.BridgeClassTransformation$WrapMethodAdviceAsComponentMethodAdvice$1.proceed(BridgeClassTransformation.java:362) > at > org.apache.tapestry5.internal.transform.ParameterWorker$InvokeLoadOnParmeterConduit.advise(ParameterWorker.java:132) > at > org.apache.tapestry5.internal.transform.BridgeClassTransformation$WrapMethodAdviceAsComponentMethodAdvice.advise(BridgeClassTransformation.java:348) > at > org.apache.tapestry5.internal.plastic.AbstractMethodInvocation.proceed(AbstractMethodInvocation.java:86) > at > org.apache.tapestry5.internal.transform.BridgeClassTransformation$WrapMethodAdviceAsComponentMethodAdvice$1.proceed(BridgeClassTransformation.java:362) > at > org.apache.tapestry5.internal.transform.ParameterWorker$InvokeLoadOnParmeterConduit.advise(ParameterWorker.java:132) > at > org.apache.tapestry5.internal.transform.BridgeClassTransformation$WrapMethodAdviceAsComponentMethodAdvice.advise(BridgeClassTransformation.java:348) > at > org.apache.tapestry5.internal.plastic.AbstractMethodInvocation.proceed(AbstractMethodInvocation.java:86) > at > org.apache.tapestry5.corelib.components.Loop.containingPageDidLoad(Loop.java) > at > org.apache.tapestry5.internal.structure.ComponentPageElementImpl$4.run(ComponentPageElementImpl.java:135) > at > org.apache.tapestry5.internal.structure.ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:1023) > at > org.apache.tapestry5.internal.structure.ComponentPageElementImpl.containingPageDidLoad(ComponentPageElementImpl.java:858) > at > org.apache.tapestry5.internal.structure.PageImpl.loaded(PageImpl.java:173) > at > org.apache.tapestry5.internal.pageload.PageLoaderImpl$3.invoke(PageLoaderImpl.java:221) > at > org.apache.tapestry5.internal.pageload.PageLoaderImpl$3.invoke(PageLoaderImpl.java:206) > at > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:65) > at > org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68) > at > org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1082) > at > org.apache.tapestry5.internal.pageload.PageLoaderImpl.loadPage(PageLoaderImpl.java:205) > at $PageLoader_122fe8e54dee78a2.loadPage(Unknown Source) > at > org.apache.tapestry5.internal.services.PageSourceImpl.getPage(PageSourceImpl.java:87) > at $PageSource_122fe8e54dee78a1.getPage(Unknown Source) > at > org.apache.tapestry5.internal.services.NonPoolingRequestPageCacheImpl.get(NonPoolingRequestPageCacheImpl.java:83) > at $RequestPageCache_122fe8e54dee78a0.get(Unknown Source) > at $RequestPageCache_122fe8e54dee789a.get(Unknown Source) > at > org.apache.tapestry5.internal.services.DefaultRequestExceptionHandler.handleRequestException(DefaultRequestExceptionHandler.java:77) > at > $RequestExceptionHandler_122fe8e54dee79e5.advised$handleRequestException_122fe8e54dee79e7(Unknown > Source) > at > $RequestExceptionHandler_122fe8e54dee79e5$Invocation_handleRequestException_122fe8e54dee79e6.proceedToAdvisedMethod(Unknown > Source) > at > org.apache.tapestry5.internal.plastic.AbstractMethodInvocation.proceed(AbstractMethodInvocation.java:84) > at > org.apache.tapestry5.ioc.internal.util.InternalUtils$19$1.proceed(InternalUtils.java:1384) > at > org.tynamo.security.services.SecurityModule$3.advise(SecurityModule.java:258) > at > org.apache.tapestry5.ioc.internal.util.InternalUtils$19.advise(InternalUtils.java:1448) > at > org.apache.tapestry5.internal.plastic.AbstractMethodInvocation.proceed(AbstractMethodInvocation.java:86) > at > $RequestExceptionHandler_122fe8e54dee79e5.handleRequestException(Unknown > Source) > at > $RequestExceptionHandler_122fe8e54dee787b.handleRequestException(Unknown > Source) > at > org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:42) > at $RequestHandler_122fe8e54dee787d.service(Unknown Source) > at > org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:1055) > at $RequestHandler_122fe8e54dee787d.service(Unknown Source) > at > org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.java:1045) > at $RequestHandler_122fe8e54dee787d.service(Unknown Source) > at > org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:90) > at $RequestHandler_122fe8e54dee787d.service(Unknown Source) > at > org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:105) > at > org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:95) > at > org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:85) > at > org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:119) > at $RequestHandler_122fe8e54dee787d.service(Unknown Source) > at $RequestHandler_122fe8e54dee7871.service(Unknown Source) > at > org.apache.tapestry5.services.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.java:385) > at > org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:53) > at $HttpServletRequestHandler_122fe8e54dee7873.service(Unknown Source) > at > org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62) > at $HttpServletRequestFilter_122fe8e54dee7870.service(Unknown Source) > at $HttpServletRequestHandler_122fe8e54dee7873.service(Unknown Source) > at > org.apache.tapestry5.services.TapestryModule$1.service(TapestryModule.java:1005) > at $HttpServletRequestHandler_122fe8e54dee7873.service(Unknown Source) > at > org.tynamo.security.services.impl.SecurityConfiguration$2.call(SecurityConfiguration.java:104) > at > org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) > at > org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) > at > org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:344) > at > org.tynamo.security.services.impl.SecurityConfiguration.service(SecurityConfiguration.java:102) > at $HttpServletRequestFilter_122fe8e54dee786e.service(Unknown Source) > at $HttpServletRequestHandler_122fe8e54dee7873.service(Unknown Source) > at $HttpServletRequestHandler_122fe8e54dee786d.service(Unknown Source) > at org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:147) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215) > at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279) > at > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) > at > org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) > at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98) > at > com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91) > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162) > at > org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:326) > at > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:227) > at > com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:170) > at > com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822) > at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719) > at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013) > at > com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225) > at > com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) > at > com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) > at > com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) > at > com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) > at > com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) > at > com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) > at com.sun.grizzly.ContextTask.run(ContextTask.java:71) > at > com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) > at > com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) > at java.lang.Thread.run(Thread.java:680) > Caused by: org.apache.tapestry5.ioc.internal.OperationException: Error > invoking service contribution method > org.apache.tapestry5.jpa.JpaModule.provideValueEncoders(MappedConfiguration, > boolean, EntityManagerSource, EntityManagerManager, TypeCoercer, > PropertyAccess, LoggerSource): The type [null] is not the expected > [EntityType] for the key class [class > com.flowlogix.website.entities.WebStatsPK]. > at > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.logAndRethrow(OperationTrackerImpl.java:102) > at > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:69) > at > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:46) > at > org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.run(PerThreadOperationTracker.java:56) > at > org.apache.tapestry5.ioc.internal.RegistryImpl.addToMappedConfiguration(RegistryImpl.java:595) > at > org.apache.tapestry5.ioc.internal.RegistryImpl.getMappedConfiguration(RegistryImpl.java:546) > at > org.apache.tapestry5.ioc.internal.ServiceResourcesImpl$3.invoke(ServiceResourcesImpl.java:126) > at > org.apache.tapestry5.ioc.internal.ServiceResourcesImpl$3.invoke(ServiceResourcesImpl.java:123) > at > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:65) > at > org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68) > at > org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1082) > at > org.apache.tapestry5.ioc.internal.ServiceResourcesImpl.getMappedConfiguration(ServiceResourcesImpl.java:121) > at > org.apache.tapestry5.ioc.internal.AbstractServiceCreator.getMappedConfiguration(AbstractServiceCreator.java:144) > at > org.apache.tapestry5.ioc.internal.AbstractServiceCreator.access$300(AbstractServiceCreator.java:35) > at > org.apache.tapestry5.ioc.internal.AbstractServiceCreator$1.findResource(AbstractServiceCreator.java:107) > at > org.apache.tapestry5.ioc.internal.util.DelegatingInjectionResources.findResource(DelegatingInjectionResources.java:38) > at > org.apache.tapestry5.ioc.internal.util.InternalUtils.calculateInjection(InternalUtils.java:272) > at > org.apache.tapestry5.ioc.internal.util.InternalUtils.access$000(InternalUtils.java:97) > at > org.apache.tapestry5.ioc.internal.util.InternalUtils$2.invoke(InternalUtils.java:321) > at > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:65) > at > org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68) > at > org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1082) > at > org.apache.tapestry5.ioc.internal.util.InternalUtils.calculateParameters(InternalUtils.java:325) > at > org.apache.tapestry5.ioc.internal.util.InternalUtils.calculateParametersForMethod(InternalUtils.java:288) > at > org.apache.tapestry5.ioc.internal.ServiceBuilderMethodInvoker$1.invoke(ServiceBuilderMethodInvoker.java:62) > ... 136 more > Caused by: java.lang.RuntimeException: Error invoking service contribution > method > org.apache.tapestry5.jpa.JpaModule.provideValueEncoders(MappedConfiguration, > boolean, EntityManagerSource, EntityManagerManager, TypeCoercer, > PropertyAccess, LoggerSource): The type [null] is not the expected > [EntityType] for the key class [class > com.flowlogix.website.entities.WebStatsPK]. > at > org.apache.tapestry5.ioc.internal.ContributionDefImpl.invokeMethod(ContributionDefImpl.java:134) > at > org.apache.tapestry5.ioc.internal.ContributionDefImpl.contribute(ContributionDefImpl.java:88) > at > org.apache.tapestry5.ioc.internal.RegistryImpl$7.run(RegistryImpl.java:599) > at > org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:50) > at > org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:47) > at > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:65) > ... 159 more > Caused by: java.lang.IllegalArgumentException: The type [null] is not the > expected [EntityType] for the key class [class > com.flowlogix.website.entities.WebStatsPK]. > at > org.eclipse.persistence.internal.jpa.metamodel.MetamodelImpl.entity(MetamodelImpl.java:160) > at > org.apache.tapestry5.jpa.JpaModule.provideValueEncoders(JpaModule.java:193) > 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.tapestry5.ioc.internal.ContributionDefImpl.invokeMethod(ContributionDefImpl.java:122) > ... 164 more -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira