【发布时间】:2017-08-11 19:51:14
【问题描述】:
我有一个具有方法访问属性的 Embeddable 类。它工作正常,直到我必须使用@AttributeOverrides 的另一个类中有两个或多个包含。
在这种情况下,我从 Hibernate 收到以下错误:
实体映射中的重复列:...列:grn_date(应该是 映射为 insert="false" update="false")
由于某些原因,Hibernate 似乎不理解方法访问。如果我使用公共属性访问一切正常,但我需要当前一个从 XMLGregorianCalendar 字段获取日历日期。
可嵌入类:
@Embeddable
@Access(AccessType.FIELD)
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "...")
public class GrnType {
@XmlAttribute(name = "...")
@Transient
protected String grn;
@XmlAttribute(name = "...", required = true)
@Transient
protected XMLGregorianCalendar dateOfEntry;
@Transient
private Calendar calendarDate;
@Access(AccessType.PROPERTY)
@Column(name = "grn")
public String getGrn() {
return grn;
}
@Access(AccessType.PROPERTY)
@Column(name = "grn_date")
private Calendar getCalendarDate() {
if(dateOfEntry!=null) {
return new GregorianCalendar(dateOfEntry.getYear(), dateOfEntry.getMonth(), dateOfEntry.getDay());
}else {
return null;
}
}
// ...setters here
}
嵌入的类:
@Entity
@Table(name="RealEstateDFl")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {...})
public class GrnEntity {
//...
@Embedded
@AttributeOverrides({
@AttributeOverride(name = "grn", column = @Column(name = "grn_main")),
@AttributeOverride(name = "grn_date", column = @Column(name = "grn_date_main"))
})
protected GrnType grnType;
@Embedded
@AttributeOverrides({
@AttributeOverride(name = "grn", column = @Column(name = "grn_sec")),
@AttributeOverride(name = "grn_date", column = @Column(name = "grn_date_sec"))
})
protected GrnType grnTypeSecondary;
//...
}
谁能建议在这种情况下如何正确覆盖属性?或者有什么解决办法?
【问题讨论】: