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

@XmlElement - Get String value from object that is not mapped with @xml-anotation

我有 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;  
   }

我是否可以使用一些魔法来获取 @Xml 元素的国家/地区名称作为简单的字符串,而无需使用 @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 class 中创建一个方法 getCountryName() 并注释 @XmlElement.