gpt4 book ai didi

java - hibernate transient 成员的默认值

转载 作者:行者123 更新时间:2023-12-01 23:21:49 27 4
gpt4 key购买 nike

我有一个 transient boolean 成员,当我从数据库检索实体时,该成员应该设置为 true,但当我创建新对象时,它应该设置为 false,直到它被持久化。保存到数据库后,成员应该变为 true。有一种方法可以让 hibernate 自动管理这个还是我应该在管理器中进行?希望下面的代码能够阐明我的需求。

class MyEntity(){
@Id
Integer id;

@Transient
boolean required;
}

class Test(){
MyEntity entity1 = new MyEntity();
assertFalse(entity1.required);

persist(entity1);
assertTrue(entity1.required);

MyEntity entityAlreadySaved = getMyEntityWithID(1);
assertTrue(entityAlreadySaved.required);
}

最佳答案

基本上 Hibernate 不会处理 @Transient 字段。所以你必须处理好自己。
默认情况下, boolean 变量为 false。如果你想将其设置为真,那么你必须根据 Adam 的答案编写逻辑
例如

class MyEntity{
@Id
Integer id;

@Transient
boolean required;

public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public boolean isRequired() {
if (getId() == null){
setRequired(false);
}else{
setRequired(true);
}
return required;
}

public void setRequired(boolean required) {
this.required = required;
}

}
而且你必须单独处理删除逻辑

关于java - hibernate transient 成员的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20522257/

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