Java XML映射嵌入ID属性
在Java中拥有此人实体:Java XML映射嵌入ID属性,java,spring,hibernate,jpa,jaxb,Java,Spring,Hibernate,Jpa,Jaxb,在Java中拥有此人实体: @Data @Entity @NoArgsConstructor @XmlRootElement(name="Person") @XmlAccessorType(XmlAccessType.FIELD) public class Person implements Serializable { @EmbeddedId private PersonIdentity persondentity; private String name; private
@Data
@Entity
@NoArgsConstructor
@XmlRootElement(name="Person")
@XmlAccessorType(XmlAccessType.FIELD)
public class Person implements Serializable {
@EmbeddedId
private PersonIdentity persondentity;
private String name;
private Boolean active;
private Boolean closed;
@XmlJavaTypeAdapter(DateAdapter.class)
@XmlAttribute(name = "DateBirth")
private Date birth;
@XmlAttribute(name = "PersonName")
private String personaName;
}
还有像复合钥匙一样的人格特征:
@Data
@NoArgsConstructor
@Embeddable
public class PersonIdentity implements Serializable {
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id")
private Long id;
@XmlAttribute(name = "PersonId")
private String personId;
}
我正在尝试将这样的XML映射到Person类:
<?xml version="1.0" encoding="UTF-8"?>
<Person personId="2017PIOE-A132" PersonName="John" DateBirth="19Apr2018 18:53" />
一开始,没有复合键(@EmbeddedId),我可以映射对象,现在使用PersonIdentity作为主键,我可以映射其他属性,但不能映射这个属性,我做错了什么?这个问题与jpa或hibernate有什么关系?如果我理解正确的话,您实际上是在问如何在将对象编组为XML时展平对象结构,这已经得到了回答。我添加了这些标记,因为我认为它们是相关的(对不起,我对Java非常陌生)。我看到了这个例子,但我觉得不一样。我需要映射personId并将其转换为PersonIdentity类型,我也尝试了@XmlJavaTypeAdapter,但它仍然不起作用。此外,我正在使用Intellij(我不知道MOXy是否兼容)