gpt4 book ai didi

java - 覆盖没有数据库字段映射的实体中的嵌入式 XML 属性

转载 作者:行者123 更新时间:2023-12-01 14:19:39 27 4
gpt4 key购买 nike

我有以下可嵌入类。

电子邮件:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Email")
@Embeddable
public class Email {

@XmlElement(required = true, nillable = true, name = "etype")
private String type;

private String address;
private String source;

// getters and setters

}

地址:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "MyAddress")
@Embeddable
public class MyAddress {

@XmlElement(required = true, nillable = true, name = "atype")
private String type;

private String zip;
// getters and setters

}

嵌入上述两者的实体。

@Entity
@Table(name = "PERSON")
public class MyPerson {

@Embedded
@AttributeOverrides({
@AttributeOverride(name = "address", column = @Column(name = "E_ADDR")),
@AttributeOverride(name = "source", column = @Column(name = "E_SRC")) })
private Email email;


@Embedded
@AttributeOverrides({
@AttributeOverride(name = "zip", column = @Column(name = "ZIP")),
private MyAddress address;

}

两个嵌入中都有一个 type 字段。但该字段未映射到任何数据库字段。但我需要覆盖它。因为hibernate运行时会抛出错误。 (编译良好)。有没有办法覆盖 type 或为嵌入的非数据库映射字段指定不同的名称?

注意:我正在寻找字段名称完整的解决方案。因为我不能简单地更改名称。

这也可以回答我的另一个问题,再次嵌入相同的 Embeddable 并覆盖所有属性。例如,我想包含具有相同 MyAddress 嵌入的家庭住址、营业地址等。

最佳答案

所有未映射到数据库的字段都应使用 @Transient 进行注释。在这种情况下,Hibernate 将不会尝试映射字段类型,也不会提示名称重复。

关于java - 覆盖没有数据库字段映射的实体中的嵌入式 XML 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17730498/

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