首页 > 解决方案 > 如何修复 Hibernate 在 Java 中复制布尔字段

问题描述

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

我已经尝试过使用布尔包装类。还尝试使用 setter,例如 isPreferred 和 isIsPreferred/setPreferred 和 setIsPreferred。

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
    }
],

标签: hibernatejpajaxbjax-rs

解决方案


You basically have two options in my opinion:

  • Annotate the class with @XmlAccessorType(XmlAccessType.FIELD)
  • Put the annotation @XmlElement(name = "isPreferred") on the setter of the field

Currently, you are creating a second field with the getter.


推荐阅读