2013-02-19 3 views
0

при выполнении этого запроса в спящем режиме получения ошибки «org.hibernate.hql.ast.QuerySyntaxException: неожиданный токен: ON около строки 1, столбец 132». может ли кто-нибудь помочь мне в моем коде, как использовать ON для спящего режима.hibernate Ошибка HQL для запроса обновления при использовании join на

Session session = (Session) em1.getDelegate(); 

org.hibernate.Query q=session.createQuery("UPDATE sc_ob_temp_audit set export_flag ='Y' WHERE audit_id IN(select a.audit_id FROM sc_ob_temp_audit a JOIN sc_ob_allocation b ON a.sc_ob_profile_code = b.sc_ob_profile_code AND a.sc_orig_country= b.sc_orig_country LEFT OUTER JOIN sc_fac_group f ON b.sc_orig_country = f.sc_orig_country AND b.sc_orig_sf_group_code = f.sc_fac_group_code LEFT OUTER JOIN (SELECT e.gp_cnt_cd,d.sc_prod_cont_code,d.sc_prod_group_code,d.sc_orig_country, e.gp_cd FROM sc_ob_prod_group d LEFT OUTER JOIN gbl_product e ON d.sc_prod_cont_code = e. gp_cnt_cd)de ON b.sc_orig_country = de.sc_orig_country AND b.sc_prod_cont_group_code=de.sc_prod_group_code WHERE a.sc_orig_country=:countryCd AND a.export_flag= 'N')"); 

q.setParameter("countryCd", country.trim()); 

q.executeUpdate(); 
+0

Вы, кажется, не понимают, как 'HQL' работы - это не то, как вы присоединяетесь к 'HQL'. Пожалуйста, прочтите [Синтаксис соединения HQL] (http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html#queryhql-joins-forms). Помните, что это ** не ** 'SQL'. –

+0

Без знания о вас спящий образ жизни Я не могу вам помочь. –

ответ

1

Вы пытаетесь выполнить SQL запрос - сделать так, вы должны использовать SQLQuery объект вместо этого. Чтобы получить объект SQLQuery, позвоните по телефону session.createSqlQuery

С другой стороны - почему вы используете Hibernate, если вы просто закончили писать инструкции SQL? Вы сопоставили таблицу sc_ob_temp_audit?

+0

Спасибо за помощь – suga

0

Посмотрев на ваш запрос, это не похоже на hql. Он выглядит как sql-запрос. use session.createSqlSquery вместо session.createQuery.

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