Also ich bin mir jetzt nicht sicher und kann es nicht testen, aber die Queries sehen bei uns immer so aus, dass wir sozusagen Felder richtig "qualifizieren":
Also statt
@Query("update topic set name = :name where id = :id")
hätte ich halt geschrieben:
@Query("update topic t set t.name = :name where t.id = :id")
Also ich mag mich irren und es geht ggf. auch so, wie Du es versucht hast, aber ich kenne die JPQL Queries irgendwie immer so. wie ich es dann geschrieben habe und ich habe es bisher auch irgendwie nie anders gesehen. (Was aber einfach an meinem Umfeld liegen kann!)
Edit: So ich mich nicht eh irre, wäre ggf. auch eine native Query ein Versuch wert. So da an das SQL keine speziellen Anforderungen gestellt werden von Seiten Spring Data, dann könnte z.B. gehen:
@Query(value="update topic set name = :name where id = :id", nativeQuery=true)
Zeigt mir, dass ich da noch viel mehr mit spielen muss um da sichere Aussagen treffen zu können. Irgendwie ging es immer und dann hat man sich da nicht weiter vertieft.