到属性。它工作得很好,直到在另一个类中有两个或多个包含,其中我必须使用@AttributeOverrides。
在这种情况下,我从Hibernate收到以下错误:
映射为插入=“false”更新=“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;
//...
}