@XmlElement - 从未使用@xml注释映射的对象中获取字符串值



我有 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注释包装国家/地区实体?

您可以

Country类型创建自定义@XmlJavaTypeAdapter

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
}

或者,如果您只关心单向封送,请尝试在test类中创建方法getCountryName()并使用 @XmlElement 对其进行批注。

最新更新