Bra*_*avo 2 soap hibernate cxf
这就是我所拥有的:
@XmlSchemaType(name = "dateTime")
@Column(name = "expiry-date", nullable = false)
protected XMLGregorianCalendar expiryDate;
Run Code Online (Sandbox Code Playgroud)
抛出以下异常:
org.hibernate.MappingException: Could not determine type for: javax.xml.datatype.XMLGregorianCalendar
Run Code Online (Sandbox Code Playgroud)
谢谢
XMLGregorianCalendar
JPA 不支持,您可以使用java.util.Date
or (此处java.util.Calendar
解释)。
也许您可以看一下Hyperjaxb3项目(为 JAXB 对象提供关系持久性)。 这里解释了如何处理时间属性:
时间属性(类型为 xsd:dateTime、xsd:date、xsd:time 等)将映射为时间 JPA 属性。Hyperjaxb3 将根据时间属性的 XML 模式类型选择时间类型为 TIMESTAMP、DATE 或 TIME。时间属性通常映射到 JPA 不支持的 XMLGregorianCalendar - 因此必须进行包装:
<xs:element name="dateTime" type="xs:dateTime" minOccurs="0"/>
Run Code Online (Sandbox Code Playgroud)
@XmlSchemaType(name = "dateTime")
protected XMLGregorianCalendar dateTime;
@Transient
public XMLGregorianCalendar getDateTime() {
return dateTime;
}
public void setDateTime(XMLGregorianCalendar value) {
this.dateTime = value;
}
@Basic
@Column(name = "DATETIMEITEM")
@Temporal(TemporalType.TIMESTAMP)
public Date getDateTimeItem() {
return XmlAdapterUtils.unmarshall(XMLGregorianCalendarAsDateTime.class, this.getDateTime());
}
public void setDateTimeItem(Date target) {
setDateTime(XmlAdapterUtils.marshall(XMLGregorianCalendarAsDateTime.class, target));
}
Run Code Online (Sandbox Code Playgroud)
另一种方法是编写您自己的解决方案,执行一些转换,而不是尝试保留您的 JAXB 对象。
归档时间: |
|
查看次数: |
3234 次 |
最近记录: |