gpt4 book ai didi

java - Hibernate Transient Extends问题

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:57:47 26 4
gpt4 key购买 nike

@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/

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