0

我有 2 个实体:

   @Entity
   @XmlRootElement
   public class test {
       @Getter
       @Setter
       @XmlElement(HERE I WANT THE NAME OF THE COUNTRY)
       private Country country
   }

   @Entity
   public class Country {
      @Getter
      @Setter
      private String name;

      @Getter
      @Setter
      private String capital;  
   }

有没有什么魔法可以用来将@XmlElement 的国家名称作为一个简单的字符串而不用@Xml-annotations 包装国家实体?

4

1 回答 1

2

@XmlJavaTypeAdapter您可以为您的Country类型创建自定义:

public static class CountryXmlAdapter extends XmlAdapter<String, Country> {

    @Override
    public Country unmarshal(String v) throws Exception {
        Country c =  new Country();
        c.setName(v);
        return c;
    }

    @Override
    public String marshal(Country v) throws Exception {
        return v != null ? v.getName() : null;
    }
}

然后,您只需像这样注释您的国家/地区字段:

@Entity
@XmlRootElement
public class test {
    @Getter
    @Setter
    @XmlElement(name = "country")
    @XmlJavaTypeAdapter(CountryXmlAdapter.class)
    private Country country
}

或者,如果您只关心单向编组,请尝试getCountryName()在您的test类中创建一个方法使用@XmlElement.

于 2017-11-21T10:38:35.997 回答