我有一个带有 jpa 注释但没有 jaxb 注释的 JPA 实体类:
@Entity
public class Category extends EntityObject {
@Id
private long id;
// getter setter and stuff
}
jaxb 的所有内容都在外部 xml 文件中配置(因为我们需要对象的不同序列化)。
<xml-bindings package-name="mystuff.category">
<java-types>
<java-type name="mystuff.Category" xml-accessor-type="NONE">
<xml-root-element name="category" />
<java-attributes>
<xml-attribute name="name" java-attribute="name" />
<xml-element name="id2" java-attribute="id" />
</java-attributes>
</java-type>
// morestuff ...
当我将类别实例编组为 xml 时,我的问题就开始了。结果显示了一个未在 xml 中配置的附加 id 元素。并且由于类别(或实体对象)没有 jaxb 注释,我不明白它来自哪里。
<category xsi:type="category" name="Category_3">
<id>1073741951</id>
<id2>1073741951</id2>
</category>
当我将 id 的 xml 元素条目显式添加到 moxy-xml 时,我得到一个包含 id 两次的元素:
<id>10737419511073741951</id>
有人可以告诉我如何摆脱这个标签,它是从哪里来的?
编辑
这里是EntityObject-Class中的id相关代码
@MappedSuperclass
public abstract class EntityObject implements Serializable {
private static final long serialVersionUID = 1L;
public abstract long getId();
@Field // a solr annotation
public void setId(long id) {
if (getId() <= 0) {
setID(id);
}
}
protected abstract void setID(long id);