gpt4 book ai didi

java - JAXB 如何将复合键字段映射为同级

转载 作者:行者123 更新时间:2023-12-02 01:50:05 26 4
gpt4 key购买 nike

我在数据库模型之后定义了以下实体:

@Entity
@Table(name = "PERSON")
@XmlRootElement(name = "person")
public class Person implements java.io.Serializable {
@Id
private Long personId;
private String personName;

@XmlElementWrapper(name="children")
@XmlElement(name="child")
private Set<Child> children = new HashSet<Child>(0);

// getters & setters
}

@Entity
@Table(name = "CHILD")
@XmlRootElement(name = "child")
public class Child implements java.io.Serializable {
@EmbeddedId
private ChildId id;
private Date childName;

// getters & setters
}

@Embeddable
public class ChildId implements java.io.Serializable {
@XmlTransient
private Person parentId;
private Date childBirthDate;
private int childOrder;

// getters & setters
}

在目前的情况下,当使用 JAXB 进行编码时,我得到的是:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<person>
<personId>7</personId>
<personName>Foo</personName>
<children>
<child>
<childName>Bar</childName>
<id>
<childBirthDate>2001-06-22</childBirthDate>
<childOrder>1</childOrder>
</id>
</child>
</children>
</person>

我想要得到的是这样的:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<person>
<personId>7</personId>
<personName>Foo</personName>
<children>
<child>
<childName>Bar</childName>
<childBirthDate>2001-06-22</childBirthDate>
<childOrder>1</childOrder>
</child>
</children>
</person>

有没有办法让 ChildId 的字段与其他 Child 的字段处于同一级别?

请告知我的选择是什么。

最佳答案

将评论移至答案:

由于同一个类中可以有多个 @Id,因此您只需将字段从 ChildId 类移动到 Child 类即可。然后,您使用 @Id 注释每个字段(从 ChildId 移动的字段)。这样,您就可以将所有字段置于同一级别,就像它们在同一类中一样,同时还保留 @EmbeddedId

的功能

关于java - JAXB 如何将复合键字段映射为同级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57432323/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com