Tôi đang cố ánh xạ một đối tượng @Embeddable trong một phân lớp có lớp cha đã có một trường của loại @Embeddable đó.Hibernate ánh xạ trường @Embeddable thứ hai trong một lớp con
Hibernate Embeddable Objects documentation tuyên bố tôi có thể sử dụng @AttributeOverrides để ghi đè lên các tên cột của một đối tượng @Embeddable:
ví dụ
@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;
...
}
Đây là trường hợp tôi có:
@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;
}
Các lỗi tôi nhận được là:
org.hibernate.MappingException: Lặp đi lặp lại cột trong bản đồ cho tổ chức: cột Thành tích: contentID (nên được ánh xạ với insert = "false" update = "false") tại org.hibernate.mapping.PersistentC lass.checkColumnDuplication (PersistentClass.java:652) tại org.hibernate.mapping.PersistentClass.checkPropertyColumnDuplication (PersistentClass.java:674) tại org.hibernate.mapping.PersistentClass.checkPropertyColumnDuplication (PersistentClass.java:670) tại org.hibernate.mapping.PersistentClass.checkColumnDuplication (PersistentClass.java:696) tại org.hibernate.mapping.PersistentClass.validate (PersistentClass.java:450) tại org.hibernate.mapping.SingleTableSubclass.validate (SingleTableSubclass .java: 43) tại org.hibernate.cfg.Configuration.validate (Configuration.java:1108) tại org.hibernate.cfg.Configuration.buildSessionFactory (Configuration.java:1293) tại org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory (AnnotationConfiguration.java:867)
UPDATE:
Tôi đã xem xét các vấn đề Hibernate liên quan đến vấn đề này và dự án GRAILS tuyên bố họ đã khắc phục sự cố này nhưng giải pháp chú thích của họ dường như không phải là chú thích javax.persistence hợp lệ (có thể đó là phiên bản mới).
Ngoài sự tò mò: Tại sao bạn nhúng quốc gia thay vì sử dụng mối quan hệ? –