【问题标题】:JAXB String to JPA Date in JavaJava中的JAXB字符串到JPA日期
【发布时间】:2018-02-26 23:57:30
【问题描述】:

我的 XML 将日期值存储为字符串(客户端要求),我希望将该字符串作为日期存储在我的数据库中,因为它是少数排序和分组所必需的。

我创建了一个在一个类中同时包含 JAXB 和 JPA 注释的类。

我希望我的类读取/写入带有字符串值的 XML,但是当它存储在数据库中时,JPA 实体应将其转换为日期并将其存储在数据库中。

目前的代码我正在阅读它作为字符串,因为我找不到简洁的解决方案:

    @XmlElement(name = "TransactionDate", required = true)
    protected String transactionDate;

    @Basic
    @Column(name = "TRANSACTIONDATE", length = 255)
    public String getTransactionDate() {
        return transactionDate;
    }

    public void setTransactionDate(String value) {
        this.transactionDate = value;

请帮助我实现它。

【问题讨论】:

  • 这个问题可能会有所帮助(将对象的字段保持为Date,但将XML序列化/反序列化为String):stackoverflow.com/questions/13568543/…
  • 您可以创建第二个只读日期字段。第一个将保持与 JAXB 映射,第二个将与 DB 映射。
  • 您说您正在接收 xml 中的日期作为字符串,日期格式是什么?如果它是 XSD:date 或 XSD datetime,您应该很容易将其解组为 XMLGregorianCalendar 对象,这将允许轻松转换为 java.util.Date
  • @Berger- 当我使用 Null 时,它被插入到数据库中。
  • @SergeyMorozov -- 它是否支持编组和取消编组。我所做的操作是 - 1) 使用 JPA 读取 XML 并将其存储在数据库中 2) 从数据库加载数据并通过 JAXB 编组 XML。 JPA 和 JAXb 都写在同一个类中。

标签: java xml hibernate jpa jaxb


【解决方案1】:

How do you specify the date format used when JAXB marshals xsd:dateTime?.

使用 XmlAdapter 我们可以实现上面提到的。我所做的唯一更改是维护两种不同的日期格式来读取 Jaxb 和编写 JPA。

【讨论】:

    猜你喜欢
    • 2012-08-13
    • 1970-01-01
    • 1970-01-01
    • 2012-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多