2

我正在尝试根据Jersey/Jaxb 上的接受的答案在 Artcile 的评论列表周围添加一个包装类,为豆类列表起别名

public class Article implements Serializable
{
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    ...
    @ManyToMany(cascade = CascadeType.ALL)
    @JoinTable(name = "ARTICLE_COMMENT",
    joinColumns =
    {
        @JoinColumn(name = "ARTICLE_ID", referencedColumnName = "ID")
    },
    inverseJoinColumns =
    {
        @JoinColumn(name = "COMMENT_ID", referencedColumnName = "ID")
    })
    @XmlElementWrapper(name = "user_comments")
    private List<Comment> comments;

    public Article()
    {
    }
 ...
 }

而评论是

@XmlRootElement
@Entity
public class Comment implements Serializable
{
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String name;

    /*
    @ManyToMany(cascade={CascadeType.ALL},fetch=FetchType.EAGER)
    private Collection<Article> articles;
    */
    ...
}

但是它返回此错误

Caused by: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
Klasse enthält zwei Eigenschaften mit demselben Namen "comments"

将 Collection 更改为 List of comments 并没有太大变化。有人知道我能做什么吗?

4

2 回答 2

8

只是一个疯狂的猜测 - 尝试注释 getter 而不是属性。

于 2013-10-24T14:21:01.770 回答
1

或者使用这行代码注释类:

@XmlAccessorType(XmlAccessType.FIELD)

XML 绑定通过实例变量进行,无需使用 getter 或 setter 方法。注释也可用于非根元素。

于 2020-02-13T09:18:22.460 回答