17.07.2016, 14:02 |
Auf diesen Beitrag antworten » |
InformaTiger |
Java - JPA Update
Hallo,
ich habe ein Problem beim Updaten meiner Datenbank mit JPA und Eclipselink. Eine meiner Entities enthält eine ElementCollection und diese kann laut folgendem Fehler nicht geupdated werden:
Zitat: |
Exception Description: Problem compiling [UPDATE tbl_repository r SET r.path = :path, r.nodes = :nodes, r.revision = :revision, r.locked = :locked WHERE r.id = :id]. [44, 51] An association field cannot be used in an update item's path expression. |
Ich verstehe zwar die Fehlermeldung, habe aber leider keinen Hinweis gefunden, wie ich unter JPA sonst eine ElementCollection updaten könnte (Anmerkung: ich möchte eine Update Query benutzen und den EntityManager-Weg vermeiden). Meine Entity sieht folgendermaßen aus:
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
|
@Entity(name = "tbl_repository")
@Table(name = "tbl_repository")
@NamedQueries({
// [...]
@NamedQuery(
name = "Repository.update",
query = "UPDATE tbl_repository r SET r.path = :path, r.nodes = :nodes, r.revision = :revision, r.locked = :locked WHERE r.id = :id")
// [...]
})
public class Repository extends filesync.core.entity.Entity implements Serializable {
// [...]
@Basic
private Path path;
@ElementCollection
@CollectionTable(name = "tbl_nodes", joinColumns = {@JoinColumn(name = "fk_node")})
private List<Path> nodes;
@OneToMany(targetEntity = User.class, mappedBy = "repository")
private List<User> users;
@OneToOne(targetEntity = Revision.class)
private Revision revision;
@Basic
private boolean locked;
// [...]
} |
|
Edit: nachdem ich nochmals eine Weile gegoogelt habe, bin ich auf diesen Beitrag gestoßen, der erklärt, dass das einfach nicht möglich ist
Mit freundlichen Grüßen
InformaTiger |