2

こんにちは私はHibernateを使用していて、データベース(Oracle 11g)からいくつかの情報を削除しようとしています。次のようなコードがあります。

    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();

およびDELETE_NEWS_BY_IDフィールドは次のようになります。

private static final String DELETE_NEWS_BY_ID = "delete from News where id IN (:idList)";

そして、私がこのコードを処理しようとすると、IDEは私にこれを与えます:

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 cannot be cast to java.lang.Integer何が何なのかわからないI

助けてください

アップデート

idListそれはint[]idListです

4

1 に答える 1

3

あなたの問題はArrays.asList(idList)呼び出しにあると思います。この投稿を見てください:

Arrays.asList()が正常に機能していませんか?

asListメソッドはプリミティブ型(報告するint)ではうまく機能しないようです。これがCast例外の問題の原因である可能性があります。

idListフォームintを整数に変更します。

整数[]idList;

そしてさらに試みる。幸運を。

于 2012-11-12T09:28:33.590 に答える