@Embeddableオブジェクトは、その親クラスがすでに@Embeddable型のフィールドを持つサブクラスにマップしようとしています。サブクラスの2番目の@EmbeddableフィールドをHibernateにマッピングする
Iは@Embeddableオブジェクトの列名を上書きする@AttributeOverridesを使用することができEmbeddable Objects documentation請求項休止:
例を
@Entity
public class Person implements Serializable {
// Persistent component using defaults
Address homeAddress;
@Embedded
@AttributeOverrides({
@AttributeOverride(name="iso2", column = @Column(name="bornIso2")),
@AttributeOverride(name="name", column = @Column(name="bornCountryName"))
})
Country bornIn;
...
}
ここに私が持っている場合です。
@Embeddable
public class ContentID implements Serializable {
@Column(name="contentID")
private String contentPath;
}
@MappedSuperclass
public abstract class BaseDomainObject implements Serializable {
@Embedded
private ContentID contentID;
}
public class Achievement extends BaseDomainObject {
@Embedded
@AttributeOverrides({
@AttributeOverride(name="contentID", column = @Column(name="awardedItem")),
})
private ContentID awardedItem;
}
私が手にエラーがある:
org.hibernate.MappingException:エンティティのマッピングで 繰り返しコラム: 達成コラム: contentID( は、insert = "false"とマップする必要があります update = "false") org.hibernate.mapping.PersistentC lass.checkColumnDuplication org.hibernate.mapping.PersistentClass.checkPropertyColumnDuplication(PersistentClass.java:670)で org.hibernate.mapping.PersistentClass.checkPropertyColumnDuplication(PersistentClass.java:674)で(PersistentClass.java:652) で org.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:696) でorg.hibernate.mapping.PersistentClass.validate(PersistentClass.java:450) でorg.hibernate.mapping.SingleTableSubclass.validate(SingleTableSubclass .java:43) at org.hibernate.cfg.Configuration.validate(Configuration.java:1108) at org.hibernate.cfg.Configuration.buildSessionFactory org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)で(Configuration.java:1293)
UPDATE:
私はこれに関するHibernateの問題を調べましたが、GRAILSプロジェクトはこの問題を修正したと主張しましたが、アノテーションソリューションは有効なjavax.persistenceアノテーション(新しいバージョンかもしれません)ではないようです。
を参照してください:なぜあなたは関係を使用するのではなく、国を埋め込むのですか? –