JPA + SPRING = DAO.Динамический список параметров - PullRequest
0 голосов
/ 21 августа 2011

Я не могу устранить ошибку с помощью динамического списка параметров "где в".Работает другой запрос

@ NamedQuery (name = "News.delete", query = "УДАЛИТЬ n ИЗ НОВОСТЕЙ n ГДЕ n.newsId in (: ids)")

, но

Вызывается: java.lang.NoSuchMethodError: org.hibernate.hql.antlr.HqlBaseParser.recover (Lantlr / RecognitionException; Lantlr / collection / impl / BitSet;) V в org.hibernate.hqll..optionalFromTokenFromClause (HqlBaseParser.java:400) при org.hibernate.hql.antlr.HqlBaseParser.deleteStatement (HqlBaseParser.java:259) в org.hibernate.hql.antlr.HqlBaseParser.statement (HqlBaseParser.java:148) в орг.hibernate.hql.ast.QueryTranslatorImpl.parse (QueryTranslatorImpl.java:248) в org.hibernate.hql.ast.QueryTranslatorImpl.doCompile (QueryTranslatorImpl.java:157) QueryTransPlayerIQJava: 111) в org.hibernate.engine.query.HQLQueryPlan. (HQLQueryPlan.java:77) в org.hibernate.engine.query.HQLQueryPlan. (HQLQueryPlan.java:56) в org.hibernate.engine.query.QueryPlanC.getHQLQueryPlan (QueryPlanCache.java:72) в org.hibernate.impl.SessionFactoryImpl.checkNamedQueries (SessionFactoryImpl.java:402) в org.hibernate.impl.SessionFactoryImpl. (SessionFactoryImpl.java:352.Конфигурация(HibernatePersistence.java:132) при org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory (LocalContainerEntityManagerFactoryBean.java:221) при org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet (AbstractEntityManagerFactoryBean.java:251) при org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods (AbstractAutowireCapableBeanFactory.java:1390) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactory.java:1359)

Новая ошибка UPD

 public void removeNews(List<Integer> listOfIdNewsForDeleting) throws DAOException {
    EntityManager entityManager = getJpaTemplate().getEntityManagerFactory().createEntityManager();

    Query query = entityManager.createNamedQuery("News.delete");
    query.setParameter("ids", listOfIdNewsForDeleting);
    int deleted = query.executeUpdate();}
* 1013 Операция Exceptionзапрос на обновление / удаление

Я не могу получить транзакцию.Поэтому я не могу использовать JpaTemplate передать список идентификаторов новостей для удаления.Может быть JpaCallback

Ответы [ 2 ]

1 голос
/ 21 августа 2011

У вас несовместимые версии hibernate и antlr.Обновите свой antlr.jar

0 голосов
/ 21 августа 2011

Используйте DELETE FROM News n WHERE n.newsId in (:ids)

См. http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#batch-direct для справки.

...