使用JPA注释编组类时的JAXBException

时间:2011-01-27 10:49:11

标签: google-app-engine jpa jaxb

在将Comment对象编组为JSON时出现以下异常:

  

javax.xml.bind.JAXBException:class javax.jdo.identity.LongIdentity   在这种情况下,也不知道它的任何超类。在   com.sun.xml.bind.v2.runtime.JAXBContextImpl.getBeanInfo(JAXBContextImpl.java:594)     在   com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:648)

下面是我的评论定义,请注意我混合了JAXB注释(用于编组)和JPA注释(用于与GAE持久化)。

@Entity
@XmlRootElement(name = "Comment")
@XmlAccessorType(XmlAccessType.FIELD)
public class Comment {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @XmlElement(name = "CommentId")
    private Long commentId;

    @Basic
    @XmlElement(name = "Author")
    private String author;

...
}

我没有得到的是为什么例外与LongIdentity有关?

2 个答案:

答案 0 :(得分:5)

尝试注释属性而不是字段。 JPA实现可能使用字节代码操作来添加LongIdentity类型的字段。

答案 1 :(得分:2)

Blaise真的解释了我的问题,问题解决了,这里是修改后的评论类。

@Entity
@XmlRootElement(name = "Comment")
@XmlAccessorType(XmlAccessType.PROPERTY)
public class Comment {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @XmlElement(name = "CommentId")
    public Long getCommentId();

    @Basic
    @XmlElement(name = "Author")
    public String getAuthor();

...
}