2017-01-06 2 views
-1

У меня возникают проблемы при попытке извлечь из базы данных с помощью Hibernate. То, что я пытаюсь сделать, - это получить вопросы из базы данных (используя Hibernate с HSQLDB), где тег tag содержится в списке вопросов. Здесь ошибка:Проблема при использовании кластера WHERE ... IN (list)

06-Jan-2017 19:43:26.021 WARN [http-apr-8080-exec-4] org.hibernate.engine.jdbc.spi.SqlExceptionHelper.logExceptions SQL Error: -5585, SQLState: 42585 06-Jan-2017 19:43:26.021 ERROR [http-apr-8080-exec-4] org.hibernate.engine.jdbc.spi.SqlExceptionHelper.logExceptions malformed numeric constant: .

Вот запрос:

Query query = session.createQuery("FROM Question q WHERE (:someTag) in (q.tagList) ORDER BY (q.creationDate) DESC").setParameter("someTag", tag).setMaxResults(amount); 

А вот полный метод:

public static List<Question> list(Tag tag, int amount){ 
    Session session = HibernateUtil.getSession(); 
    Query query = session.createQuery("FROM Question q WHERE (:someTag) in (q.tagList) ORDER BY (q.creationDate) DESC").setParameter("someTag", tag).setMaxResults(amount); 
    return query.list(); 
} 

ответ

2

Вы должны использовать elements предложение, если вы пытаетесь проверить, является ли список содержит элемент, в этом случае запрос будет выглядеть так:

"FROM Question q WHERE :someTag in elements(q.tagList) ORDER BY (q.creationDate) DESC" 
+0

Он бросает неожиданный токен: CONTAINS – Malvrok

+0

Я обновил ответ, не могли бы вы попробовать с 'элементами' сейчас? –

+0

Большое вам спасибо! Я занимаюсь этой проблемой в течение 3 дней! : D – Malvrok

Смежные вопросы