Ich habe zwei Datenbankeinheiten: Forum
und .JPA: Fremdschlüssel Annotation
Topic
hat protected long forumId
Daten Mitglied, die natürlich die 's Forum angibt.
Meine Frage ist, welche Annotation für dieses Datenelement verwendet werden soll?
Ich habe zwei Datenbankeinheiten: Forum
und .JPA: Fremdschlüssel Annotation
Topic
hat protected long forumId
Daten Mitglied, die natürlich die 's Forum angibt.
Meine Frage ist, welche Annotation für dieses Datenelement verwendet werden soll?
Als Forum viele Themen hat, und ein Thema gehört zu einem und nur Forum, möchten Sie wahrscheinlich mit einem Forum type-Attribut mit @ManyToOne
kommentierte gehen:
@ManyToOne
@JoinColumn(name = "forumId")
private Forum forum;
Weitere:
ManyToOne und JPA mapping
aber das "Problem" in diesem Fall ist, dass, wenn Sie Ihr Thema zu XML oder JSON serialisieren (um es zum Beispiel an einen Klienten zu übergeben), das gesamte Forum-Objekt auch serienmäßig serialisiert wird ... dasselbe, wenn Wenn Sie ein Thema auf Ihren Server hochladen, müssen Sie die gesamten Topic + Forum-Objekte übergeben. Sie können nicht einfach die Forum-ID verwenden. In manchen Fällen scheint es einfacher, den Fremdschlüssel der verknüpften Entität einfach manuell einzufügen. – splinter123
@ManyToOne Als Anmerkung schon sagt - Sie viele Themen pro Forum
habenDa andere geantwortet haben -
Sie sollten die Annotationen ManyToOne und JoinColumn verwenden.
Bedenken Sie, dass es sich bei JPA um ORM - Object relationales Mapping handelt,
Sie sollten auf ein anderes Objekt verweisen, wie Sie es "natürlich" in Java getan hätten - also über ein Objekt und nicht über seinen Bezeichner (forumId) Ihr Fall),
Dies war eine der Entwurfsüberlegungen zwischen den Beziehungen bei JPA und Hibernate (vorher JPA).
Sie müssen diese 'forumId' nicht in' Topic' deklarieren. –
Warum sagst du das? Ich denke, es ist notwendig, weil ich wissen muss, welches Forum das Thema gehört – socksocket
@ Socksocket Ich denke, es ist, weil Sie ein Attribut "Forum" kommentieren können, die ID mit einem '@ JoinColumn' Annotation, siehe meine Antwort. ;) – elias