MYENTITY
列ID_A
とID_B
、および@Embeddable
エンティティを持つテーブルがある場合、次のことに気付きました。
@Embeddable
public class EmbedMe {
@Column(name="col_a")
private String a;
@Column(name="col_b")
private String b;
// getters-setters
}
そして、私はそれを次のように使用します@Entity
:
@Entity
@Table(name="MyEntity")
public class MyEntity {
@EmbeddedId
@AttributeOverrides( {
@AttributeOverride(name = "a",
column = @Column(name = "id_a")),
@AttributeOverride(name = "b",
column = @Column(name = "id_b")),
@AttributeOverride(name = "inexistingProp",
column = @Column(name = "INEXISTENT_COL")),
})
private EmbedMe embeded;
}
inexistingProp
誤ったマッピング例外をスローする代わりに、オーバーライドは無視されます。これはどこにも文書化されていませんが、これは JPA の動作ですか? この問題に関する公式文書はありますか?
@Embeddable
また、 に既に正しいマッピング ( "id_a"
) があり、 をからに変更する@Column
と、次のエラーが発生することに気付きました。@AttributeOverride
id_a
foo_bar_baz
org.hibernate.MappingException: Unable to find column with logical name: ID_A in org.hibernate.mapping.Table(MY_SCHEMA.MYENTITY) and its related supertables and secondary tables
FOO_BAR_BAZ
ではなく、列が存在しないというエラーが表示されると思いますID_A
。なぜそれは不平を言っているの ID_A
ですか?
更新MYENTITY
: with@ManyToOne
に関連する他のエンティティがあり、 でid_a
明示されているため、このエラーが発生していることが判明しました@JoinColumns
。