gpt4 book ai didi

java - JPA:一个父类(super class)的不同列名称

转载 作者:行者123 更新时间:2023-12-02 14:44:40 25 4
gpt4 key购买 nike

假设我们有三个类:A、B、C。 B 扩展 A,C 扩展 A。是否可以(原则上,例如动态地)为以下内容设置不同的列名称:

  1. 类 A 的字段在类 B 中继承
  2. 类 A 的字段在类 C 中继承

我的意思是同时 1 和 2。我使用 eclipselink。

最佳答案

是的,这是可能的,可以通过以下方式完成

@Embeddable public class Address {
protected String street;
protected String city;
protected String state;
@Embedded protected Zipcode zipcode;
}

@Embeddable public class Zipcode {
protected String zip;
protected String plusFour;
}

@Entity public class Customer {
@Id protected Integer id;
protected String name;
@AttributeOverrides({
@AttributeOverride(name="state",
column=@Column(name="ADDR_STATE")),
@AttributeOverride(name="zipcode.zip",
column=@Column(name="ADDR_ZIP"))
})
@Embedded protected Address address;
...
}

它可以应用于扩展映射父类(super class)的实体,或者应用于嵌入字段或属性,以覆盖由映射父类(super class)或可嵌入类(或其属性之一的可嵌入类)定义的基本映射或 id 映射。如果未指定 AttributeOverride,则该列的映射方式与原始映射中的方式相同。

在下面的示例中,它应用于实体

 @MappedSuperclass
public class Employee {
@Id protected Integer id;
@Version protected Integer version;
protected String address;
public Integer getId() { ... }
public void setId(Integer id) { ... }
public String getAddress() { ... }
public void setAddress(String address) { ... }
}

@Entity
@AttributeOverride(name="address", column=@Column(name="ADDR"))
public class PartTimeEmployee extends Employee {
// address field mapping overridden to ADDR
protected Float wage();
public Float getHourlyWage() { ... }
public void setHourlyWage(Float wage) { ... }
}

关于java - JPA:一个父类(super class)的不同列名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37282311/

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