2017-02-28 9 views
1

誰かがエンティティのマッピングを修正する方法を知っていますか? org.hibernate.AnnotationException:エンティティを@EmbeddedIdにマップする方法は?

エラーによって引き起こさ

あるJoinColumns.referencedColumnNameでは見られない com.test.TableAaの列名ID。

TableAaエンティティ

@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複合キー

@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エンティティ

@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; 
} 
あなたのTAbleAaで

TableBbPk複合キー

@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

フォーマット、コード内であなたの問題を考えてください。 – Mistalis

答えて

0

次のようにあなたのOneToManyマッピングを持っている必要があります:あなたは、埋め込みた名前を介して基準

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

pkです。

0

私は、このエンティティ

@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; 
} 
関連する問題