2

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

Aliaksei Bulhak
  • 6,078
  • 8
  • 45
  • 75

1 Answers1

3

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.

Community
  • 1
  • 1
Hernan Velasquez
  • 2,770
  • 14
  • 21