Hi I’m using Hibernate and trying to delete some info from my database(Oracle 11g)
I have such code:
Session session = sessionFactory.getCurrentSession();
session.beginTransaction();
Query query = session.createQuery(DELETE_NEWS_BY_ID);
query.setParameterList(ID, Arrays.asList(idList));
query.executeUpdate();
session.getTransaction().commit();
and DELETE_NEWS_BY_ID field look like this:
private static final String DELETE_NEWS_BY_ID = "delete from News where id IN (:idList)";
and when I’m trying to process this code IDE gives me this:
java.lang.ClassCastException: [I cannot be cast to java.lang.Integer
at org.hibernate.type.descriptor.java.IntegerTypeDescriptor.unwrap(IntegerTypeDescriptor.java:36)
at org.hibernate.type.descriptor.sql.IntegerTypeDescriptor$1.doBind(IntegerTypeDescriptor.java:57)
at org.hibernate.type.descriptor.sql.BasicBinder.bind(BasicBinder.java:92)
at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:280)
at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:275)
at org.hibernate.param.NamedParameterSpecification.bind(NamedParameterSpecification.java:66)
at org.hibernate.hql.internal.ast.exec.BasicExecutor.execute(BasicExecutor.java:95)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.executeUpdate(QueryTranslatorImpl.java:413)
at org.hibernate.engine.query.spi.HQLQueryPlan.performExecuteUpdate(HQLQueryPlan.java:282)
at org.hibernate.internal.SessionImpl.executeUpdate(SessionImpl.java:1267)
at org.hibernate.internal.QueryImpl.executeUpdate(QueryImpl.java:116)
at com.epam.newsmanagement.dao.HibernateNewsDao.deleteNewsById(HibernateNewsDao.java:61)
at com.epam.newsmanagement.action.NewsAction.delete(NewsAction.java:155)
I don know whats meen I cannot be cast to java.lang.Integer whats meen I
please help
UPDATE
idList it is int[] idList
I feel that your problem is in the Arrays.asList(idList) call. Take a look at this post:
Arrays.asList() not working as it should?
It seems that the asList method does not work well with primitive types (int as you report) and this may be the cause of your Cast exception problem.
Change idList form int to Integer:
Integer []idList;
And try again. Good luck.