这是我在现实世界中遇到的问题。
我有一个类,如下所示。字段名称的选择不是我的,而是由数据库中的实际字段名称决定的(名称已更改)。
import java.util.Date;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
@XmlRootElement(name = "JAXBAnnotatedClass1")
@XmlType(propOrder = { "A_DT", "B_DT" })
public class JAXBAnnotatedClass1
{
private Date A_DT;
private Date B_DT;
@XmlJavaTypeAdapter(JaxbDateAdapter.class)
public Date getA_DT()
{
return A_DT;
}
public void setA_DT(Date a_DT)
{
A_DT = a_DT;
}
@XmlJavaTypeAdapter(JaxbDateAdapter.class)
public Date getB_DT()
{
return B_DT;
}
public void setB_DT(Date b_DT)
{
B_DT = b_DT;
}
}
我认为 Date Adapter 类与问题无关。
我正在使用 Eclipse Indigo Service Release Version 1。我尝试从此类生成架构,但出现以下错误 -
Property a_DT is present but not specified in @XmlType.propOrder
this problem is related to the following location:
....JAXBAnnotatedClass1.getA_DT()
at com.cigna.framework.testing.JAXBAnnotatedClass1
Property b_DT is present but not specified in @XmlType.propOrder
this problem is related to the following location:
....JAXBAnnotatedClass1.getB_DT()
这里奇怪的是,如果我进行以下更改,一切正常 -
@XmlType(propOrder = { "a_DT", "b_DT" }) // changed first uppercase letter
//to lowercase without changing field name
另一个有趣的观察是,如果我有这样的字段名称(如下),一切正常!以下情况的唯一区别是字段名称在下划线之前有两个大写字母而不是一个。
@XmlRootElement(name = "JAXBAnnotatedClass2")
@XmlType(propOrder = { "AX_DT", "BX_DT" })
public class JAXBAnnotatedClass2
{
private Date AX_DT;
private Date BX_DT;
// similar code...
是什么导致了这个问题?有没有办法解决这个问题?