Spring Data: Modellierung mit einer Embeddable bean

lam_tr

Top Contributor
Hallo zusammen,

ich stehe mal wieder vor einer JPA Problem und weiß nicht weiter.

Java:
Caused by: org.hibernate.AnnotationException: @OneToOne or @ManyToOne on EntityC.entityB references an unknown entity: EntityB

Der Aufbau der Klasse ist an sich sehr einfach. Ich habe eine EntityA, sie embedded EntityB als Referenz, EntityB hat eine Relation zu EntityC.
Schlussendlich soll das was in EntityA und EntityB an Properties sind in eine Tabelle geschrieben werden. Dann sollte es eine 1:N Relation zu EntityC haben.

Da EntityB keine richtige Entity ist, wird es vermutlich auch nicht als "Known Entity" im JPA erkannt. Wie kann ich das denn angehen?
Aktuell kann die Spring Boot Anwendung nicht mal hochgefahren werden.

Code:
@Entity
@Access(AccessType.PROPERTY)
@Table(name = "ENTITY_A")
public class EntityA {

    @Embedded
    private EntityB entityB;

  // Getter, Setter, Konstruktor übersichtshalber rausgenommen
}

Code:
@Embeddable
@Access(AccessType.PROPERTY)
public class EntityB {

    @OneToMany(mappedBy = "entity_b", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    private List<EntityC> parameterDList = new ArrayList<>();

  // Getter, Setter, Konstruktor übersichtshalber rausgenommen
}

Code:
@Entity
public class EntityC {

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "entity_b_id")
    private EntityB entityB;

  // Getter, Setter, Konstruktor übersichtshalber rausgenommen
}

Viele Grüße
lam
 
Macht ja auch nicht wirklich sinn. Das embeddable hat ja keinen eigenen PrimaryKey. D.h. es müsste das embedding entity referenziert werden. Aus dem Bauch müsstest du entweder die Relation auf dem Embedding Entity pflegen oder die Beziehung als OneToOne abbilden.
 
Macht ja auch nicht wirklich sinn. Das embeddable hat ja keinen eigenen PrimaryKey. D.h. es müsste das embedding entity referenziert werden. Aus dem Bauch müsstest du entweder die Relation auf dem Embedding Entity pflegen oder die Beziehung als OneToOne abbilden.
Müsste das PrimaryKey nicht von EntityA geholt werden? Was meinst du mit "Relation auf dem Embedding Entity pflegen"? Wenn es nach mir geht, würde ich direkt EntityB überspringen und direkt EntityC im EntityA referenzieren, leider ist das nicht möglich.
 

Zurück
Oben