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]