| Trying to use the org.hibernate.orm.tooling:hibernate-enhance-maven-plugin in a Hibernate 5.2.x environment leads to an exception on the "enhance" goal when a property is mapped to a generic type without the raw type specified as target of the association.
@ManyToOne SomeEntity<?> field;
Versus:
@ManyToOne(target = SomeEntity.class) SomeEntity<?> field;
I'm not sure if JPA demands the target to be specified for generic types, but Hibernate without bytecode enhancement handles both mappings just fine. The bytecode enhancement however fails for the first case with:
[ERROR] Failed to execute goal org.hibernate.orm.tooling:hibernate-enhance-maven-plugin:5.2.12.Final:enhance (default) on project domain: Unable to enhance class: CourseGroupLedger.class: Unable to enhance persistent attribute [com.pallasathenagroup.entities.ledger.CourseGroupLedger:entries]: Could not enhance entity class [com.pallasathenagroup.entities.ledger.CourseGroupLedger] to add field writer method [$$_hibernate_write_entries]: com.pallasathenagroup.entities.ledger.CourseGroupLedgerEntry<?> -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.hibernate.orm.tooling:hibernate-enhance-maven-plugin:5.2.12.Final:enhance (default) on project domain: Unable to enhance class: CourseGroupLedger.class
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:213)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:956)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:290)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:194)
at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:498)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)
Caused by: org.apache.maven.plugin.MojoExecutionException: Unable to enhance class: CourseGroupLedger.class
at org.hibernate.orm.tooling.maven.MavenEnhancePlugin.doEnhancement (MavenEnhancePlugin.java:227)
at org.hibernate.orm.tooling.maven.MavenEnhancePlugin.execute (MavenEnhancePlugin.java:152)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:208)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:956)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:290)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:194)
at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:498)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)
Caused by: org.hibernate.bytecode.enhance.spi.EnhancementException: Unable to enhance persistent attribute [com.pallasathenagroup.entities.ledger.CourseGroupLedger:entries]
at org.hibernate.bytecode.enhance.internal.javassist.PersistentAttributesEnhancer.enhancePersistentAttribute (PersistentAttributesEnhancer.java:145)
at org.hibernate.bytecode.enhance.internal.javassist.PersistentAttributesEnhancer.enhance (PersistentAttributesEnhancer.java:63)
at org.hibernate.bytecode.enhance.internal.javassist.EntityEnhancer.enhance (EntityEnhancer.java:66)
at org.hibernate.bytecode.enhance.internal.javassist.EnhancerImpl.enhance (EnhancerImpl.java:136)
at org.hibernate.bytecode.enhance.internal.javassist.EnhancerImpl.enhance (EnhancerImpl.java:72)
at org.hibernate.orm.tooling.maven.MavenEnhancePlugin.doEnhancement (MavenEnhancePlugin.java:222)
at org.hibernate.orm.tooling.maven.MavenEnhancePlugin.execute (MavenEnhancePlugin.java:152)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:208)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:956)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:290)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:194)
at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:498)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)
Caused by: org.hibernate.bytecode.enhance.spi.EnhancementException: Could not enhance entity class [com.pallasathenagroup.entities.ledger.CourseGroupLedger] to add field writer method [$$_hibernate_write_entries]
at org.hibernate.bytecode.enhance.internal.javassist.PersistentAttributesEnhancer.generateFieldWriter (PersistentAttributesEnhancer.java:313)
at org.hibernate.bytecode.enhance.internal.javassist.PersistentAttributesEnhancer.enhancePersistentAttribute (PersistentAttributesEnhancer.java:136)
at org.hibernate.bytecode.enhance.internal.javassist.PersistentAttributesEnhancer.enhance (PersistentAttributesEnhancer.java:63)
at org.hibernate.bytecode.enhance.internal.javassist.EntityEnhancer.enhance (EntityEnhancer.java:66)
at org.hibernate.bytecode.enhance.internal.javassist.EnhancerImpl.enhance (EnhancerImpl.java:136)
at org.hibernate.bytecode.enhance.internal.javassist.EnhancerImpl.enhance (EnhancerImpl.java:72)
at org.hibernate.orm.tooling.maven.MavenEnhancePlugin.doEnhancement (MavenEnhancePlugin.java:222)
at org.hibernate.orm.tooling.maven.MavenEnhancePlugin.execute (MavenEnhancePlugin.java:152)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:208)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:956)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:290)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:194)
at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:498)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)
Caused by: javassist.NotFoundException: com.pallasathenagroup.entities.ledger.CourseGroupLedgerEntry<?>
at javassist.ClassPool.get (ClassPool.java:452)
at org.hibernate.bytecode.enhance.internal.javassist.PersistentAttributesHelper.getTargetEntityClass (PersistentAttributesHelper.java:286)
at org.hibernate.bytecode.enhance.internal.javassist.PersistentAttributesEnhancer.handleBiDirectionalAssociation (PersistentAttributesEnhancer.java:322)
at org.hibernate.bytecode.enhance.internal.javassist.PersistentAttributesEnhancer.generateFieldWriter (PersistentAttributesEnhancer.java:288)
at org.hibernate.bytecode.enhance.internal.javassist.PersistentAttributesEnhancer.enhancePersistentAttribute (PersistentAttributesEnhancer.java:136)
at org.hibernate.bytecode.enhance.internal.javassist.PersistentAttributesEnhancer.enhance (PersistentAttributesEnhancer.java:63)
at org.hibernate.bytecode.enhance.internal.javassist.EntityEnhancer.enhance (EntityEnhancer.java:66)
at org.hibernate.bytecode.enhance.internal.javassist.EnhancerImpl.enhance (EnhancerImpl.java:136)
at org.hibernate.bytecode.enhance.internal.javassist.EnhancerImpl.enhance (EnhancerImpl.java:72)
at org.hibernate.orm.tooling.maven.MavenEnhancePlugin.doEnhancement (MavenEnhancePlugin.java:222)
at org.hibernate.orm.tooling.maven.MavenEnhancePlugin.execute (MavenEnhancePlugin.java:152)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:208)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:956)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:290)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:194)
at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:498)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)
I believe bytecode enhancement is pretty heavily reworked at the moment. Is it still sensible to propose a fix for the 5.2.x branch? |