I ran into an issue the other day with Hibernate configuration.
I have a bean that maps to a table in the database. It has a column, featured, that only has values of 0 or 1. For legacy reasons, we map that to an integer (turning it into a boolean is on the List Of Things To Do).
I ran into an issue, and was getting this error in the logs:
Caused by: java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.Integer at org.hibernate.type.IntegerType.set(IntegerType.java:41) at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:136) at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:116) at org.hibernate.loader.Loader.bindPositionalParameters(Loader.java:1698) at org.hibernate.loader.Loader.bindParameterValues(Loader.java:1669) at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1554) at org.hibernate.loader.Loader.doQuery(Loader.java:661) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224) at org.hibernate.loader.Loader.doList(Loader.java:2211) at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2095) at org.hibernate.loader.Loader.list(Loader.java:2090) at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:94) at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1569) at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283)
Here's the relevant section of the mapping file:
<property name="featured" type="integer" columnn="featured" />
I tried explicitly laying out the type of the SQL column:
<property name="featured" type="integer">
<column sql-type="INTEGER" name="featured" />
</property>
But neither of these worked; I received the same error.
I took a step back and looked at the bean.
Integer featured; public Integer getFeatured() { return featured; } public void setFeatured(Integer featured) { this.featured = featured; } ...
and realized that I had added a convenience method that was confusing the Hibernate code:
public boolean isFeatured() { return ... }
When I changed the signature of the convenience method to:
public boolean isFeaturedListing() { return ... }
the exception went away. Thought I'd share for anyone searching for this stacktrace.
[tags]javabeans[/tags]
Wow we just ran into this error again!
I was seeing this error intermittently, while on a Java 1.7 box and Dan was NEVER seeing this error running the SAME code on a Java 1.6 box.
After Dan upgraded to Java 1.7 he started seeing the error.
Not sure what changes in Java made this show up.