JPA-Aktualisierung mehrere Zeilen und Tabellen

brauche ich zum aktualisieren mehrerer Zeilen in der Tabelle ein und es scheint ok, um das Objekt-orientierten Ansatz mit einer for-Schleife und macht einen merge.

...
//get list and assign columns to be updated
...
for (MyEntity e : entityList) {
   em.merge(e);
}
..

dieser Ansatz ermöglicht auch mich zu update anderen Tabellen (andere Eigenschaft pf MyEntity).
auf eine der Fragen, die hier gepostet die Aktualisierung mehrere Zeilen mit JPA , die zweite option verwendet ein namedQuery zu aktualisieren scheint schneller zu sein. Aber wie wird das update durchgeführt werden, wenn ich brauchen, um batch-update mehrere Tabellen, wie gut?

habe ich versucht:

@NamedQuery(name="Agent.updateAccountStatusByTree",
        query="UPDATE com.sample.core.data.Agent a "
            + "INNER JOIN com.sample.core.data.Player p "
            + "ON a.player.id = p.id "
            + "SET a.accountStatus=:accountStatus, p.status=:accountStatus "
            + "WHERE a.site.id=:siteId and a.agentTree like :agentTree")})

aber das wirft ein:

org.hibernate.hql.ast.QuerySyntaxException: expecting "set", found 'INNER'

weitere option, die ich versucht habe, ist:

 @NamedQuery(name="Agent.updateAccountStatusByTree",
        query="update com.sample.core.data.Agent a "
            + "set a.accountStatus=:accountStatus, a.player.status=:playerStatus "
            + "where a.site.id=:siteId and a.agentTree like :agentTree")})

da ich schon einen finden der anderen Tabelle, jedoch generiert dies eine ungültige Abfrage wirft eine sql-Grammatik Ausnahme... gibt es eine andere Möglichkeit, dies zu erreichen?

Dank.

InformationsquelleAutor geneqew | 2011-11-08
Schreibe einen Kommentar