2017-02-28 4 views
1

Kann jemand die Zuordnung von Entitäten reparieren?Wie man Entitäten mit @EmbeddedId abbildet?

Fehler ist

Verursacht durch: org.hibernate.AnnotationException: Spaltenname ID des com.test.TableAa nicht in JoinColumns.referencedColumnName gefunden.

TableAa Entität

@Entity 
@Table(name = "TABLE_AA") 
public class TableAa { 
    @EmbeddedId 
    private TableAaPk pk; 
    @Column(name = "FIRST_NAME") 
    private String first_name; 
    @Column(name = "LAST_NAME") 
    private String last_name; 
    //@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true) 
    //@JoinColumns({ 
    //@JoinColumn(name = "ID", referencedColumnName = "ID", insertable = false, updatable = false), 
    //@JoinColumn(name = "ACCOUNT_NUMBER", referencedColumnName = "ACCOUNT_NUMBER", insertable = false, updatable = false) })  
    @OneToMany(mappedBy = "tableAa", cascade = CascadeType.ALL) 
    private List<TableBb> tableBbList; 
} 

TableAaPk zusammengesetzten Schlüssel

@Embeddable 
public class TableAaPk implements Serializable{ 
    private static final long serialVersionUID = 1L; 
    @Column(name="ID") 
    private String id; 
    @Column(name="ACCOUNT_NUMBER") 
    private String accountNumber; 
} 

TableBb Entität

@Entity 
@Table(name = "TABLE_BB") 
public class TableBb { 
    @EmbeddedId 
    private TableBbPk pk; 
    @Column(name = "FIRST_NAME") 
    private String first_name; 
    @Column(name = "LAST_NAME") 
    private String last_name; 
} 

TableBbPk zusammengesetzten Schlüssel

@Embeddable 
public class TableBbPk implements Serializable{ 
    private static final long serialVersionUID = 1L; 
    @Column(name="ID") 
    private String id; 
    @Column(name="ACCOUNT_NUMBER") 
    private String accountNumber; 
    @Column(name="CODE") 
    private String code; 
    @ManyToOne(fetch = FetchType.LAZY) 
    @JoinColumns({ 
    @JoinColumn(name = "ID", referencedColumnName = "ID", insertable = false, updatable = false), 
    @JoinColumn(name = "ACCOUNT_NUMBER", referencedColumnName = "ACCOUNT_NUMBER", insertable = false, updatable = false) }) 
    private TableAa tableAa; 
} 
+0

Format Code, bitte – Mistalis

Antwort

0

In Ihrem TAbleAa sollten Sie Ihre OneToMany Mapping haben wie folgt:

@OneToMany(mappedBy = "pk.tableAa", cascade = CascadeType.ALL) 
private List<TableBb> tableBbList; 

Sie durch die integrierbare Referenz, die Namen pk ist.

0

Ich denke, Ihr Problem in dieser Entität

@Entity 
@Table(name = "TABLE_BB") 
public class TableBb { 
    @EmbeddedId 
    private TableBbPk pk; 
    @Column(name = "FIRST_NAME") 
    private String first_name; 
    @Column(name = "LAST_NAME") 
    private String last_name; 

    // I think the solution is to add the relation @ManyToOne which mapped by in the other side 
    @ManyToOne // because u refere to this name (tableAa) in @OneToMany(mappedBy = "tableAa"...) in TableAa entity 
    private TableAa tableAa; 
} 
Verwandte Themen