J'essaie de répliquer cette requête de MySQL à HQL: UPDATE utilisateurs u, mines m SET u.mana = u.mana + COALESCE ((SÉLECTIONNER (m.mana_rate) des mines m où m.user_id = u.id), 0)Hibernate: mise à jour à la somme de l'autre table
Il suffit de faire ceci en HQL: mise à jour utilisateur u définir u.mana = u.mana + (sélectionner coalesce (somme (m.manaRate), 0) à partir de la mine où m = m.userId u.id)
Donne l'erreur suivante: Exception in thread "main" org.hibernate.hql.ast. QuerySyntaxException: noeud AST inattendu: requête [mise à jour mm.user.User vous définissez u.mana = u.mana + (sélectionnez coalesce (sum (m.manaRate), 0) à partir de mm.map.buildings.mines.Mine m où m .userId = u.id)]
Je suis nouveau sur Hibernate, donc je ne sais pas par où commencer et ce que signifie l'erreur. Si ce n'est pas possible, puis-je écrire une requête MySQL native dans Hibernate?
EDIT: Le problème semble être dans « u.mana = u.mana + », parce que quand je fais juste u.mana = (sélectionner ... la requête fonctionne très bien
J'ai également expérimenté un comportement étrange en exécutant des suppressions en bloc impliquant des sous-requêtes, et à la fin utilisé SQL natif à la place.Il semble être un problème de la HQL parser –