public void do_UPDATE(Set<Long> customerIdSet) {
final String query =
"UPDATE product_orders po " +
"INNER join customer c " +
"ON po.order_id = c.order_id " +
"SET po.updated_on = now() " +
"WHERE c.customer_id IN (:customerIdSet)";
List<Long> ids = new ArrayList<Long>(customerIdSet.size());
for(final Long id : customerIdSet) {
ids.add(id);
}
_sessionFactory
.getCurrentSession()
.createSQLQuery(query)
.setParameterList("customerIdSet", ids)
.executeUpdate();
}
SQLGrammarExceptionが表示されます。このクエリは実際には本当のMySQLコンソールで実行されますが、Hibernateはそれが正しい構文だと思うのはなぜですか?Hibernate、JOINSを持つネイティブSQL更新クエリを実行できません
'.createQuery(クエリ)'? http://stackoverflow.com/questions/8636806/difference-between-hibernate-createcriteria-createquery-createsqlquery-functio – Alex
これは、HQLクエリを作成するためのものです。 –
'.setParameter' '?あなたの' customerIdSet'は 'List'型ではないので、 – Alex