我想仅从子类中将所有变量保存在超类中
//This class is from an API, I cannot touch or change
class SuperClass {
private String name;
private String info;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
}
@Entity
class ChildClass extends SuperClass {
@id
private long id;
}
Run Code Online (Sandbox Code Playgroud)
我希望表有这些列(id,name,info)
它可行吗?如果是,怎么样?
如果访问器未设置为final超类,则可以在子类中覆盖它们,并将JPA注释添加到重写的访问器方法中.
class SuperClass { public String getName() { ... } public String getInfo() { ... }
@Entity
class ChildClass extends SuperClass {
@Id
private long id;
public Long getId() { return id; }
@Access(AccessType.PROPERTY)
@Column(name = "name")
public String getName() { return super.getName(); }
@Access(AccessType.PROPERTY)
@Column(name = "info")
public String getInfo() { return super.getInfo(); }
}
Run Code Online (Sandbox Code Playgroud)
class SuperClass { public String getName() { ... } public String getInfo() { ... }
@MappedSuperClass
class NamedModel extends SuperClass {
@Access(AccessType.PROPERTY)
@Column(name = "name")
public String getName() { return super.getName(); }
@Access(AccessType.PROPERTY)
@Column(name = "info")
public String getInfo() { return super.getInfo(); }
}
@Entity
class ChildClass extends NamedModel {
@Id
private long id;
}
Run Code Online (Sandbox Code Playgroud)
我使用您的代码创建了一个示例应用程序.下载应用程序并运行集成测试,mvn clean test并检查生成的SQL以查看所需的结果.
| 归档时间: |
|
| 查看次数: |
1978 次 |
| 最近记录: |