Senhores(as),
tenho essa query em SQL:
update topicolivro set topicoPai_id = (select tll.id from topicolivro tll where tll.clonede = topicolivro.topicopai_id and tll.livroeletronico_id=X) where livroeletronico_id=X
tentei fazê-la em HQL, ficou assim:
update TopicoLivro t set t.topicoPai.id = (select tll.id from TopicoLivro tll where tll.cloneDe = t.topicoPai.id and tll.livroEletronico.id="+livroClone.getId()+") where livroeletronico_id="+livroClone.getId()
a execução montou a seguinte query:
update TopicoLivro set topicoPai_id=(select topicolivr1_.id from TopicoLivro topicolivr1_ where cloneDe=topicoPai_id and livroEletronico_id=X)
where livroeletronico_id=X
e esta não funciona como desejo, na verdade ela não funciona. Percebi que ele desconsidera o alias que informei (“TopicoLivro t”), no POSTGRES esse alias não é entendido, por isso acho que o problema é do driver.
Então tentei usar o sql para executar o update dessa forma: createSQLQuery(query).executeUpdate()
mas retornou o erro:
java.lang.UnsupportedOperationException: Update queries only supported through HQL
Alguma sugestão?