JAX-RS - JSON 属性 值中关联对象的 toString()

JAX-RS - toString() of associated object in JSON property value

我有这两个Javaclasses

public class Artist {
    @Id
    private Integer id;
    private String name;
    private Short birthYear;
    @JsonIgnore                                                // This is Jackson
    @OneToMany(mappedBy = "artist", fetch = FetchType.EAGER)   // This is JPA
    private List<Album> albums = new ArrayList<Album>();
    . . .
    @Override
    public String toString() {
        return name;
    }
}

public class Album {
    @Id
    private Integer id;
    private String name;
    private Short releaseYear;
    @ManyToOne                                                 // This is JPA
    private Artist artist;
}

现在,我想要的是当我制作 JSON 相册的对象时 class 它 returns 像这样:

{
    id : 2012000587,
    name : 'Escultura',
    releaseYear : '2012',
    artist : 'Guaco'
}

现在输出:

{
    id : 2012000587,
    name : 'Escultura',
    releaseYear : '2012',
    artist : {
        id : 2044452000,
        name : 'Guaco',
        birthYear : 1987
    }
}

我想不惜一切代价避免为此问题使用自定义序列化程序。

我该怎么做?

尝试为 name 属性 添加 getter 并用 @JsonValue 注释对其进行注释。

public class Artist {
    private String name;
    ...
    @JsonValue
    public String getName() { return name; }
}

这里是 link Jackson Wiki 页面以供参考。