I am attempting to utilize Hibernate 4.3.8 in a service that I am creating that will be running on Glassfish 4.1. When I attempt to
read an object from the db, such as the example below:
Product product = entityManager.find(Product.class, 980001);
The following exception is thrown
java.lang.ClassCastException: com.lynden.allin.service.Product cannot be cast to com.lynden.allin.service.Product
At first glance this may seem a bit strange since the 2 classes appear identical, and they are, but the issue is that there are 2 instances of the class being loaded by different classloaders. When the entityManager attempts to cast the class, it grabs a version that the service itself doesn’t know about since the service the reference that the service has was created from a different class loader.
After some searching it appears that this is a know issue with Hibernate 4.3.6 and newer:
The solution for the time being is to downgrade hibernate to 4.3.5 in order to avoid this issue in Glassfish.