mrbusche.com

Hibernate returning BigDecimal instead of Long

I was trying to run a query to get a list of IDs from a database table and then compare that list to individual Ids on the page. The logic was pretty straightforward. Get IDs via a query and then check if other IDs are found in that list of IDs. The query itself was working fine (I've reduced the complexity of the query a lot), but my contains statement wasn't finding any matches (even though they were mostly all matches). It turns out that Hibernate was returning a List of BigDecimal rather than a list of Long and my comparison was a Long value. What I needed to do was force the column to return the datatype I wanted.

addScalar(columnName, dataType)

public ListretrieveOrgTypeWithoutParent() { Session session = getHibernateTemplate().getSessionFactory().openSession();

ListorgTypeIds = session.createSQLQuery( "SELECT typeId FROM org_type_cd").addScalar("typeId", StandardBasicTypes.LONG).list();

session.close(); return orgTypeIds; };