如何修复Java中的Hibernate复制布尔字段

时间:2019-04-09 09:11:10

标签: hibernate jpa jaxb jax-rs

我为数据库表创建了一个JPA实体。有一个布尔字段“ isPreferred”。如果我得到表的条目,则答案中有重复的字段。 一个带有“ preferred” = true,另一个带有“ isPreferred” = true。 我希望只有isPreferred字段。我该如何解决这个问题?

我已经尝试使用布尔包装器类。 还尝试使用诸如isPreferred和isIsPreferred / setPreferred和setIsPreferred之类的setter。

import javax.persistence.*;
import javax.xml.bind.annotation.XmlElement;

@Entity
public class Address {

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;
  private String street;
  private String houseNr;
  private String zip;
  private String city;
  private String country;
  @XmlElement(name = "isPreferred")
  private boolean preferred;

  ...getters/setters...

  public boolean isPreferred() {
    return preferred;
  }

  public void setPreferred(boolean isPreferred) {
    this.preferred = isPreferred;
  }
}

我希望响应中只有一个布尔值字段。只有“ isPreferred”字段, 但实际上我得到了首选,并且是isPreferred:

"addresses": [
    {
        "zip": "12345",
        "country": "DEU",
        "city": "Köln",
        "street": "Hauptstr.",
        "isPreferred": true,
        "houseNr": "1",
        "type": "homeAddress",
        "preferred": true
    }
],

2 个答案:

答案 0 :(得分:2)

我认为您基本上有两种选择:

  • @XmlAccessorType(XmlAccessType.FIELD)注释班级
  • 将注释@XmlElement(name = "isPreferred")放在字段的设置器上

当前,您正在使用getter创建第二个字段。

答案 1 :(得分:0)

如果我调试响应方法,则只会看到一个像预期的那样的字段,但是在邮递员响应中,我有2个布尔字段: debugger view with Response.ok(getAddresses()).build()