java - 在 JAX-RS 中序列化 java.util.list

标签 java web-services jpa jaxb jax-rs

我有课本:

@Entity
@Table(name = "books")
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType

public class Book {
    @Id
    @XmlAttribute
    private String isbn;

    private String title;
    private String authors;
    private int year;

    @OneToMany(mappedBy="reservedBook")
    private List<Reservation> bookReservations;

    //Getters, setters, addReservation, remove Reservation
        ......................
}

然后,我有类(class)预订

@Entity
@Table(name = "reservations")
@XmlRootElement

public class Reservation {

    private String username;
    private String isbn;
    @Temporal(TemporalType.DATE)
    private Date date;

    @ManyToOne
    @JoinColumn(name = "isbn")
    private Book reservedBook;

    @ManyToOne
    @JoinColumn(name = "username")
    private User userWhoReserved;

        //Getters and setters

        ...........
 }

在资源类中,我尝试像这样获取一本特定的书:

@GET
@Path("/{isbn}")
@Produces(MediaType.TEXT_XML)
public Book getBookByIsbn(@PathParam("isbn") String isbn) {

    Book book = entityManager.find(Book.class, isbn);

    if (book != null) {
        return book;

    }

}

现在,它不会序列化字段列表 bookReservations。我尝试了很多在互联网上找到的想法,比如用 @XmlElement 注释列表的 getter 或在其他地方使用其他注释(我现在不记得了),但没有任何效果。

编辑:这是响应的样子:

<book isbn="3333333333">
    <title>Mere Christianity</title>
    <authors>C. S. Lewis</authors>
    <year>2000</year>
</book>

但我也想显示预订。

似乎是什么解决方案? 谢谢! 索林

最佳答案

我认为问题可能在于列表 bookReservationsnull

class A{

    private List<String> someList = new ArrayList<String>();

    @XmlElement(name = "some-tag")
    public List<String> getList() {
        return someList;
    }

    public void setSomeList(List<String> someOtherList) {
        this.someList = someOtherList;
    }
}

我每天都使用此代码并为我工作(忽略我未提供的其他注释)。

我在这些情况下遇到过问题,但只发现由于某种原因列表为空,它没有被序列化。尝试通过调试该方法来检查 JAXB 是否在 setter 方法中设置了该列表。

关于java - 在 JAX-RS 中序列化 java.util.list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13623310/

相关文章:

mysql - 在 Play 框架中持久保存 JPA 实体的最佳方式

java - "node = node.next"是什么意思?

java - 抽屉导航后压 fragment 无法加载

java - Java volatile 变量在读取之前是否强加了先行关系?

java - 如何将第一个单词移到最后?

.net - 异常 "System.Net.WebException: The remote name could not be resolved"的原因?

web-services - SOAP-ERROR : Encoding: string . .. 不是有效的 utf-8 字符串

c# - 如何创建 WCF 客户端以连接到使用 JRuby 和 sinatra 构建的 Web 服务?

java - 选择成员变量条件为真的所有bean

java - 如何查询数据库中未映射到实体的结果集(JPA、JBoss)