stoner
stoner

Reputation: 407

HQL :Hibernate update query

i use struts2 and hibernate jpa for my app and i have an error when traying using update query with hibernate here is my code :

in my class dao

@Override
public void UpdateNoteEvaluation() {
    try {
        String hql="update Evaluation e " +
                "SET e.Eval_NoteGlobal =: ( SELECT SUM( sv.SousEval_Note ) AS sum FROM sousevaluation sv )" +
                "ORDER BY EVAL_ID DESC LIMIT 1 ";
        Query q= session.createQuery(hql);

        q.executeUpdate();

    } catch (Exception e) {
        transaction.rollback();
        e.printStackTrace();
    }   
}

in my class Action :

public String saveOrUpdate(){   
    sousevaldao.UpdateNoteEvaluation();
    System.out.println("update note ok ok");

    return SUCCESS;
}

so here i can't make the update i get this error :

java.lang.IllegalArgumentException: node to traverse cannot be null!
    at org.hibernate.hql.ast.util.NodeTraverser.traverseDepthFirst(NodeTraverser.java:55)
    at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:277)

knowing i have test the update query im phpmyadmin it's work fine

Upvotes: 1

Views: 6820

Answers (1)

Mikko Maunu
Mikko Maunu

Reputation: 42074

If query has been tested to be working one via phpMyAdmin, it is quite clear that query is SQL query - not a HQL query. Also syntax of query seems to contain MySQL SQL dialect specific LIMIT clause.

Query for native SQL queries can be created via Session.createSQLQuery(String queryString) method:

String sql = ...
Query q = session.createSQLQuery(sql);

Upvotes: 1

Related Questions