-
Bug
-
Resolution: Fixed
-
P3
-
8u66
-
b122
-
x86_64
-
windows_7
-
Verified
FULL PRODUCT VERSION :
java version "1.8.0_66"
Java(TM) SE Runtime Environment (build 1.8.0_66-b18)
Java HotSpot(TM) 64-Bit Server VM (build 25.66-b18, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows [Version 6.1.7601]
EXTRA RELEVANT SYSTEM CONFIGURATION :
64-bit operating system
Intel Core i3 CPU 550 @ 3.20 GHz
8 GB RAM
A DESCRIPTION OF THE PROBLEM :
We can not migrate our application to JDK 1.8 because of the following error.
Compiler crashes with java.lang.NullPointerException while compiling Java sources with org.hibernate.annotations.TypeDef
annotation from hibernate-core-4.2.15.Final.jar.
REGRESSION. Last worked in version 7u76
ADDITIONAL REGRESSION INFORMATION:
java version "1.7.0_21"
Java(TM) SE Runtime Environment (build 1.7.0_21-b11)
Java HotSpot(TM) Client VM (build 23.21-b01, mixed mode)
And also:
java version "1.6.0_37"
Java(TM) SE Runtime Environment (build 1.6.0_37-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01, mixed mode)
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
1. Run the javac compiler with following commands:
set JDK_HOME=E:\Dist\jdk1.8.0_66
%JDK_HOME%\bin\javac -d ..\out -g -encoding UTF-8 -verbose -classpath ..\lib\hibernate-core-4.2.15.Final.jar ..\src\ru\ftc\upc2\testing\extract\package-info.java ..\src\ru\ftc\upc2\testing\extract\Status.java ..\src\ru\ftc\upc2\testing\extract\IdEnumType.java > build.log 2>&1
, where ..\lib\hibernate-core-4.2.15.Final.jar can be downloaded from Maven Central Repository: https://repo1.maven.org/maven2/org/hibernate/hibernate-core/4.2.15.Final/hibernate-core-4.2.15.Final.jar
and *.java files are provided below in "Source code for an executable test case" section.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
Compiled *.class files in ..\out directory.
ACTUAL -
1. No compiled classes in ..\out directory.
2. java.lang.NullPointerException error in build.log file.
The build.log file content is provided below (see Error Message(s)/ Crash Logs section).
ERROR MESSAGES/STACK TRACES THAT OCCUR :
[parsing started RegularFileObject[..\src\ru\ftc\upc2\testing\extract\package-info.java]]
[parsing completed 19ms]
[parsing started RegularFileObject[..\src\ru\ftc\upc2\testing\extract\Status.java]]
[parsing completed 2ms]
[parsing started RegularFileObject[..\src\ru\ftc\upc2\testing\extract\IdEnumType.java]]
[parsing completed 4ms]
[search path for source files: e:\Issues\UPCSEC-1788-java-8\reproducer\extract\lib\hibernate-core-4.2.15.Final.jar]
[search path for class files: E:\Dist\jdk1.8.0_66\jre\lib\resources.jar,E:\Dist\jdk1.8.0_66\jre\lib\rt.jar,E:\Dist\jdk1.8.0_66\jre\lib\sunrsasign.jar,E:\Dist\jdk1.8.0_66\jre\lib\jsse.jar,E:\Dist\jdk1.8.0_66\jre\lib\jce.jar,E:\Dist\jdk1.8.0_66\jre\lib\charsets.jar,E:\Dist\jdk1.8.0_66\jre\lib\jfr.jar,E:\Dist\jdk1.8.0_66\jre\classes,E:\Dist\jdk1.8.0_66\jre\lib\ext\access-bridge-64.jar,E:\Dist\jdk1.8.0_66\jre\lib\ext\cldrdata.jar,E:\Dist\jdk1.8.0_66\jre\lib\ext\dnsns.jar,E:\Dist\jdk1.8.0_66\jre\lib\ext\jaccess.jar,E:\Dist\jdk1.8.0_66\jre\lib\ext\jfxrt.jar,E:\Dist\jdk1.8.0_66\jre\lib\ext\localedata.jar,E:\Dist\jdk1.8.0_66\jre\lib\ext\nashorn.jar,E:\Dist\jdk1.8.0_66\jre\lib\ext\sunec.jar,E:\Dist\jdk1.8.0_66\jre\lib\ext\sunjce_provider.jar,E:\Dist\jdk1.8.0_66\jre\lib\ext\sunmscapi.jar,E:\Dist\jdk1.8.0_66\jre\lib\ext\sunpkcs11.jar,E:\Dist\jdk1.8.0_66\jre\lib\ext\zipfs.jar,e:\Issues\UPCSEC-1788-java-8\reproducer\extract\lib\hibernate-core-4.2.15.Final.jar]
[loading ZipFileIndexFileObject[E:\Dist\jdk1.8.0_66\lib\ct.sym(META-INF/sym/rt.jar/java/lang/Enum.class)]]
[loading ZipFileIndexFileObject[E:\Dist\jdk1.8.0_66\lib\ct.sym(META-INF/sym/rt.jar/java/lang/Comparable.class)]]
[loading ZipFileIndexFileObject[E:\Dist\jdk1.8.0_66\lib\ct.sym(META-INF/sym/rt.jar/java/lang/Object.class)]]
[loading ZipFileIndexFileObject[E:\Dist\jdk1.8.0_66\lib\ct.sym(META-INF/sym/rt.jar/java/io/Serializable.class)]]
[loading ZipFileIndexFileObject[E:\Dist\jdk1.8.0_66\lib\ct.sym(META-INF/sym/rt.jar/java/lang/String.class)]]
[loading ZipFileIndexFileObject[e:\Issues\UPCSEC-1788-java-8\reproducer\extract\lib\hibernate-core-4.2.15.Final.jar(org/hibernate/HibernateException.class)]]
[loading ZipFileIndexFileObject[e:\Issues\UPCSEC-1788-java-8\reproducer\extract\lib\hibernate-core-4.2.15.Final.jar(org/hibernate/engine/spi/SessionImplementor.class)]]
[loading ZipFileIndexFileObject[e:\Issues\UPCSEC-1788-java-8\reproducer\extract\lib\hibernate-core-4.2.15.Final.jar(org/hibernate/usertype/UserType.class)]]
[loading ZipFileIndexFileObject[E:\Dist\jdk1.8.0_66\lib\ct.sym(META-INF/sym/rt.jar/java/sql/PreparedStatement.class)]]
[loading ZipFileIndexFileObject[E:\Dist\jdk1.8.0_66\lib\ct.sym(META-INF/sym/rt.jar/java/sql/ResultSet.class)]]
[loading ZipFileIndexFileObject[E:\Dist\jdk1.8.0_66\lib\ct.sym(META-INF/sym/rt.jar/java/sql/SQLException.class)]]
[loading ZipFileIndexFileObject[E:\Dist\jdk1.8.0_66\lib\ct.sym(META-INF/sym/rt.jar/java/sql/Types.class)]]
[loading ZipFileIndexFileObject[E:\Dist\jdk1.8.0_66\lib\ct.sym(META-INF/sym/rt.jar/java/lang/Class.class)]]
[loading ZipFileIndexFileObject[E:\Dist\jdk1.8.0_66\lib\ct.sym(META-INF/sym/rt.jar/java/lang/Override.class)]]
[loading ZipFileIndexFileObject[E:\Dist\jdk1.8.0_66\lib\ct.sym(META-INF/sym/rt.jar/java/lang/annotation/Annotation.class)]]
[loading ZipFileIndexFileObject[e:\Issues\UPCSEC-1788-java-8\reproducer\extract\lib\hibernate-core-4.2.15.Final.jar(org/hibernate/annotations/TypeDefs.class)]]
[loading ZipFileIndexFileObject[e:\Issues\UPCSEC-1788-java-8\reproducer\extract\lib\hibernate-core-4.2.15.Final.jar(org/hibernate/annotations/TypeDef.class)]]
An exception has occurred in the compiler (1.8.0_66). Please file a bug at the Java Bug Database (http://bugreport.java.com/bugreport/) after checking the database for duplicates. Include your program and the following diagnostic in your report. Thank you.
java.lang.NullPointerException
at com.sun.tools.javac.comp.Attr.visitSelect(Attr.java:3312)
at com.sun.tools.javac.tree.JCTree$JCFieldAccess.accept(JCTree.java:1897)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:566)
at com.sun.tools.javac.comp.Attr.visitSelect(Attr.java:3227)
at com.sun.tools.javac.tree.JCTree$JCFieldAccess.accept(JCTree.java:1897)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:566)
at com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:608)
at com.sun.tools.javac.comp.Annotate.enterAttributeValue(Annotate.java:405)
at com.sun.tools.javac.comp.Annotate.enterAnnotation(Annotate.java:312)
at com.sun.tools.javac.comp.Annotate.enterAnnotation(Annotate.java:236)
at com.sun.tools.javac.comp.Annotate.enterAttributeValue(Annotate.java:381)
at com.sun.tools.javac.comp.Annotate.enterAttributeValue(Annotate.java:357)
at com.sun.tools.javac.comp.Annotate.enterAnnotation(Annotate.java:312)
at com.sun.tools.javac.comp.Annotate.enterAnnotation(Annotate.java:236)
at com.sun.tools.javac.comp.MemberEnter.actualEnterAnnotations(MemberEnter.java:923)
at com.sun.tools.javac.comp.MemberEnter.access$600(MemberEnter.java:64)
at com.sun.tools.javac.comp.MemberEnter$5.run(MemberEnter.java:876)
at com.sun.tools.javac.comp.Annotate.flush(Annotate.java:143)
at com.sun.tools.javac.comp.Annotate.enterDone(Annotate.java:129)
at com.sun.tools.javac.comp.Enter.complete(Enter.java:512)
at com.sun.tools.javac.comp.Enter.main(Enter.java:471)
at com.sun.tools.javac.main.JavaCompiler.enterTrees(JavaCompiler.java:982)
at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:857)
at com.sun.tools.javac.main.Main.compile(Main.java:523)
at com.sun.tools.javac.main.Main.compile(Main.java:381)
at com.sun.tools.javac.main.Main.compile(Main.java:370)
at com.sun.tools.javac.main.Main.compile(Main.java:361)
at com.sun.tools.javac.Main.compile(Main.java:56)
at com.sun.tools.javac.Main.main(Main.java:42)
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
/* ------------------------------------------------------ package-info.java file contents ---*/
@org.hibernate.annotations.TypeDefs(value = {
@org.hibernate.annotations.TypeDef(name = "HistoryEventStatusTypeRef", typeClass = Status.HistoryEventStatusType.class)
}) package ru.ftc.upc2.testing.extract;
/* ------------------------------------------------------ Status.java file contents --- */
package ru.ftc.upc2.testing.extract;
public enum Status {
NEW,
PROCESSED;
public class HistoryEventStatusType extends IdEnumType {
@Override
public Class<?> returnedClass() {
return Status.class;
}
}
}
/* ------------------------------------------------------ IdEnumType.java file contents --- */
package ru.ftc.upc2.testing.extract;
import org.hibernate.HibernateException;
import org.hibernate.engine.spi.SessionImplementor;
import org.hibernate.usertype.UserType;
import java.io.Serializable;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
public abstract class IdEnumType implements UserType {
@Override
public Object assemble(Serializable cached, Object owner) throws HibernateException {
return cached;
}
@Override
public Object deepCopy(Object value) throws HibernateException {
return value;
}
@Override
public Serializable disassemble(Object value) throws HibernateException {
return (Serializable) value;
}
@Override
public boolean equals(Object x, Object y) throws HibernateException {
return x == y;
}
@Override
public int hashCode(Object x) throws HibernateException {
return x == null ? 0 : x.hashCode();
}
@Override
public boolean isMutable() {
return false;
}
@Override
public Object nullSafeGet(ResultSet rs, String[] names, SessionImplementor sessionImplementor, Object owner)
throws HibernateException, SQLException {
return null;
}
@Override
public void nullSafeSet(PreparedStatement st, Object value, int index, SessionImplementor sessionImplementor)
throws HibernateException, SQLException { }
@Override
public Object replace(Object original, Object target, Object owner)
throws HibernateException {
return original;
}
@Override
public abstract Class<?> returnedClass();
@Override
public int[] sqlTypes() {
return new int[]{Types.INTEGER};
}}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
Unfortunately no.
java version "1.8.0_66"
Java(TM) SE Runtime Environment (build 1.8.0_66-b18)
Java HotSpot(TM) 64-Bit Server VM (build 25.66-b18, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows [Version 6.1.7601]
EXTRA RELEVANT SYSTEM CONFIGURATION :
64-bit operating system
Intel Core i3 CPU 550 @ 3.20 GHz
8 GB RAM
A DESCRIPTION OF THE PROBLEM :
We can not migrate our application to JDK 1.8 because of the following error.
Compiler crashes with java.lang.NullPointerException while compiling Java sources with org.hibernate.annotations.TypeDef
annotation from hibernate-core-4.2.15.Final.jar.
REGRESSION. Last worked in version 7u76
ADDITIONAL REGRESSION INFORMATION:
java version "1.7.0_21"
Java(TM) SE Runtime Environment (build 1.7.0_21-b11)
Java HotSpot(TM) Client VM (build 23.21-b01, mixed mode)
And also:
java version "1.6.0_37"
Java(TM) SE Runtime Environment (build 1.6.0_37-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01, mixed mode)
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
1. Run the javac compiler with following commands:
set JDK_HOME=E:\Dist\jdk1.8.0_66
%JDK_HOME%\bin\javac -d ..\out -g -encoding UTF-8 -verbose -classpath ..\lib\hibernate-core-4.2.15.Final.jar ..\src\ru\ftc\upc2\testing\extract\package-info.java ..\src\ru\ftc\upc2\testing\extract\Status.java ..\src\ru\ftc\upc2\testing\extract\IdEnumType.java > build.log 2>&1
, where ..\lib\hibernate-core-4.2.15.Final.jar can be downloaded from Maven Central Repository: https://repo1.maven.org/maven2/org/hibernate/hibernate-core/4.2.15.Final/hibernate-core-4.2.15.Final.jar
and *.java files are provided below in "Source code for an executable test case" section.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
Compiled *.class files in ..\out directory.
ACTUAL -
1. No compiled classes in ..\out directory.
2. java.lang.NullPointerException error in build.log file.
The build.log file content is provided below (see Error Message(s)/ Crash Logs section).
ERROR MESSAGES/STACK TRACES THAT OCCUR :
[parsing started RegularFileObject[..\src\ru\ftc\upc2\testing\extract\package-info.java]]
[parsing completed 19ms]
[parsing started RegularFileObject[..\src\ru\ftc\upc2\testing\extract\Status.java]]
[parsing completed 2ms]
[parsing started RegularFileObject[..\src\ru\ftc\upc2\testing\extract\IdEnumType.java]]
[parsing completed 4ms]
[search path for source files: e:\Issues\UPCSEC-1788-java-8\reproducer\extract\lib\hibernate-core-4.2.15.Final.jar]
[search path for class files: E:\Dist\jdk1.8.0_66\jre\lib\resources.jar,E:\Dist\jdk1.8.0_66\jre\lib\rt.jar,E:\Dist\jdk1.8.0_66\jre\lib\sunrsasign.jar,E:\Dist\jdk1.8.0_66\jre\lib\jsse.jar,E:\Dist\jdk1.8.0_66\jre\lib\jce.jar,E:\Dist\jdk1.8.0_66\jre\lib\charsets.jar,E:\Dist\jdk1.8.0_66\jre\lib\jfr.jar,E:\Dist\jdk1.8.0_66\jre\classes,E:\Dist\jdk1.8.0_66\jre\lib\ext\access-bridge-64.jar,E:\Dist\jdk1.8.0_66\jre\lib\ext\cldrdata.jar,E:\Dist\jdk1.8.0_66\jre\lib\ext\dnsns.jar,E:\Dist\jdk1.8.0_66\jre\lib\ext\jaccess.jar,E:\Dist\jdk1.8.0_66\jre\lib\ext\jfxrt.jar,E:\Dist\jdk1.8.0_66\jre\lib\ext\localedata.jar,E:\Dist\jdk1.8.0_66\jre\lib\ext\nashorn.jar,E:\Dist\jdk1.8.0_66\jre\lib\ext\sunec.jar,E:\Dist\jdk1.8.0_66\jre\lib\ext\sunjce_provider.jar,E:\Dist\jdk1.8.0_66\jre\lib\ext\sunmscapi.jar,E:\Dist\jdk1.8.0_66\jre\lib\ext\sunpkcs11.jar,E:\Dist\jdk1.8.0_66\jre\lib\ext\zipfs.jar,e:\Issues\UPCSEC-1788-java-8\reproducer\extract\lib\hibernate-core-4.2.15.Final.jar]
[loading ZipFileIndexFileObject[E:\Dist\jdk1.8.0_66\lib\ct.sym(META-INF/sym/rt.jar/java/lang/Enum.class)]]
[loading ZipFileIndexFileObject[E:\Dist\jdk1.8.0_66\lib\ct.sym(META-INF/sym/rt.jar/java/lang/Comparable.class)]]
[loading ZipFileIndexFileObject[E:\Dist\jdk1.8.0_66\lib\ct.sym(META-INF/sym/rt.jar/java/lang/Object.class)]]
[loading ZipFileIndexFileObject[E:\Dist\jdk1.8.0_66\lib\ct.sym(META-INF/sym/rt.jar/java/io/Serializable.class)]]
[loading ZipFileIndexFileObject[E:\Dist\jdk1.8.0_66\lib\ct.sym(META-INF/sym/rt.jar/java/lang/String.class)]]
[loading ZipFileIndexFileObject[e:\Issues\UPCSEC-1788-java-8\reproducer\extract\lib\hibernate-core-4.2.15.Final.jar(org/hibernate/HibernateException.class)]]
[loading ZipFileIndexFileObject[e:\Issues\UPCSEC-1788-java-8\reproducer\extract\lib\hibernate-core-4.2.15.Final.jar(org/hibernate/engine/spi/SessionImplementor.class)]]
[loading ZipFileIndexFileObject[e:\Issues\UPCSEC-1788-java-8\reproducer\extract\lib\hibernate-core-4.2.15.Final.jar(org/hibernate/usertype/UserType.class)]]
[loading ZipFileIndexFileObject[E:\Dist\jdk1.8.0_66\lib\ct.sym(META-INF/sym/rt.jar/java/sql/PreparedStatement.class)]]
[loading ZipFileIndexFileObject[E:\Dist\jdk1.8.0_66\lib\ct.sym(META-INF/sym/rt.jar/java/sql/ResultSet.class)]]
[loading ZipFileIndexFileObject[E:\Dist\jdk1.8.0_66\lib\ct.sym(META-INF/sym/rt.jar/java/sql/SQLException.class)]]
[loading ZipFileIndexFileObject[E:\Dist\jdk1.8.0_66\lib\ct.sym(META-INF/sym/rt.jar/java/sql/Types.class)]]
[loading ZipFileIndexFileObject[E:\Dist\jdk1.8.0_66\lib\ct.sym(META-INF/sym/rt.jar/java/lang/Class.class)]]
[loading ZipFileIndexFileObject[E:\Dist\jdk1.8.0_66\lib\ct.sym(META-INF/sym/rt.jar/java/lang/Override.class)]]
[loading ZipFileIndexFileObject[E:\Dist\jdk1.8.0_66\lib\ct.sym(META-INF/sym/rt.jar/java/lang/annotation/Annotation.class)]]
[loading ZipFileIndexFileObject[e:\Issues\UPCSEC-1788-java-8\reproducer\extract\lib\hibernate-core-4.2.15.Final.jar(org/hibernate/annotations/TypeDefs.class)]]
[loading ZipFileIndexFileObject[e:\Issues\UPCSEC-1788-java-8\reproducer\extract\lib\hibernate-core-4.2.15.Final.jar(org/hibernate/annotations/TypeDef.class)]]
An exception has occurred in the compiler (1.8.0_66). Please file a bug at the Java Bug Database (http://bugreport.java.com/bugreport/) after checking the database for duplicates. Include your program and the following diagnostic in your report. Thank you.
java.lang.NullPointerException
at com.sun.tools.javac.comp.Attr.visitSelect(Attr.java:3312)
at com.sun.tools.javac.tree.JCTree$JCFieldAccess.accept(JCTree.java:1897)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:566)
at com.sun.tools.javac.comp.Attr.visitSelect(Attr.java:3227)
at com.sun.tools.javac.tree.JCTree$JCFieldAccess.accept(JCTree.java:1897)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:566)
at com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:608)
at com.sun.tools.javac.comp.Annotate.enterAttributeValue(Annotate.java:405)
at com.sun.tools.javac.comp.Annotate.enterAnnotation(Annotate.java:312)
at com.sun.tools.javac.comp.Annotate.enterAnnotation(Annotate.java:236)
at com.sun.tools.javac.comp.Annotate.enterAttributeValue(Annotate.java:381)
at com.sun.tools.javac.comp.Annotate.enterAttributeValue(Annotate.java:357)
at com.sun.tools.javac.comp.Annotate.enterAnnotation(Annotate.java:312)
at com.sun.tools.javac.comp.Annotate.enterAnnotation(Annotate.java:236)
at com.sun.tools.javac.comp.MemberEnter.actualEnterAnnotations(MemberEnter.java:923)
at com.sun.tools.javac.comp.MemberEnter.access$600(MemberEnter.java:64)
at com.sun.tools.javac.comp.MemberEnter$5.run(MemberEnter.java:876)
at com.sun.tools.javac.comp.Annotate.flush(Annotate.java:143)
at com.sun.tools.javac.comp.Annotate.enterDone(Annotate.java:129)
at com.sun.tools.javac.comp.Enter.complete(Enter.java:512)
at com.sun.tools.javac.comp.Enter.main(Enter.java:471)
at com.sun.tools.javac.main.JavaCompiler.enterTrees(JavaCompiler.java:982)
at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:857)
at com.sun.tools.javac.main.Main.compile(Main.java:523)
at com.sun.tools.javac.main.Main.compile(Main.java:381)
at com.sun.tools.javac.main.Main.compile(Main.java:370)
at com.sun.tools.javac.main.Main.compile(Main.java:361)
at com.sun.tools.javac.Main.compile(Main.java:56)
at com.sun.tools.javac.Main.main(Main.java:42)
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
/* ------------------------------------------------------ package-info.java file contents ---*/
@org.hibernate.annotations.TypeDefs(value = {
@org.hibernate.annotations.TypeDef(name = "HistoryEventStatusTypeRef", typeClass = Status.HistoryEventStatusType.class)
}) package ru.ftc.upc2.testing.extract;
/* ------------------------------------------------------ Status.java file contents --- */
package ru.ftc.upc2.testing.extract;
public enum Status {
NEW,
PROCESSED;
public class HistoryEventStatusType extends IdEnumType {
@Override
public Class<?> returnedClass() {
return Status.class;
}
}
}
/* ------------------------------------------------------ IdEnumType.java file contents --- */
package ru.ftc.upc2.testing.extract;
import org.hibernate.HibernateException;
import org.hibernate.engine.spi.SessionImplementor;
import org.hibernate.usertype.UserType;
import java.io.Serializable;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
public abstract class IdEnumType implements UserType {
@Override
public Object assemble(Serializable cached, Object owner) throws HibernateException {
return cached;
}
@Override
public Object deepCopy(Object value) throws HibernateException {
return value;
}
@Override
public Serializable disassemble(Object value) throws HibernateException {
return (Serializable) value;
}
@Override
public boolean equals(Object x, Object y) throws HibernateException {
return x == y;
}
@Override
public int hashCode(Object x) throws HibernateException {
return x == null ? 0 : x.hashCode();
}
@Override
public boolean isMutable() {
return false;
}
@Override
public Object nullSafeGet(ResultSet rs, String[] names, SessionImplementor sessionImplementor, Object owner)
throws HibernateException, SQLException {
return null;
}
@Override
public void nullSafeSet(PreparedStatement st, Object value, int index, SessionImplementor sessionImplementor)
throws HibernateException, SQLException { }
@Override
public Object replace(Object original, Object target, Object owner)
throws HibernateException {
return original;
}
@Override
public abstract Class<?> returnedClass();
@Override
public int[] sqlTypes() {
return new int[]{Types.INTEGER};
}}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
Unfortunately no.