@MappedSuperclass
public abstract class BaseAbstract implements Serializable{
private static final long serialVersionUID = 1L;
protected String test = //some random value;
public String getTest() {
return test;
}
public void setTest(String test){
this.test = test;
}
}
@Entity
public class Artist extends BaseAbstract
{
private static final long serialVersionUID = 1L;
private Integer id;
@override
@Transient
public String getTest() {
return test;
}
.....
}
我的问题是...当我尝试对艺术家进行任何操作时,连同 id 和名称,测试也会被保存,但事实并非如此...
如果我在 baseabstract 类 getTest() 方法上添加相同的 transient ,我会看到未创建测试列(理想情况下应该发生什么)但是如果我尝试通过在子类中添加注释来覆盖该方法,它会创建测试栏...
我不知道为什么会这样,因为当 hibernate 创建艺术家对象并检查注释时,它应该看到艺术家方法的 getTest() 上存在的 transient 注释......并且不应该在数据库中创建列...
如果您需要任何说明,请告诉我......
非常感谢对此的任何回应....
谢谢
最佳答案
当您将父类标记为@MappedSuperclass 时,您是在说
Persist its properties for each subclass
由于您的父类是抽象(您不能实例化一个抽象类),请执行以下操作
@MappedSuperclass
public abstract class BaseAbstract implements Serializable {
@Transient
public String getTest() {
}
}
并且如果您不想保留您的子类 getTest 属性,请重做
@Entity
public class Artist extends BaseAbstract {
@Transient
public String getTest() {
}
}
没有别的!
关于java - Hibernate Transient Extends问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2598393/