临时成员的java hibernate默认值
我有一个临时布尔成员,当我从db中检索实体时,它应该设置为true,但当我创建一个新对象时,它应该设置为false,直到它被持久化为止。保存到db后,该成员应为true。 有一种方法可以让hibernate自动管理它,或者我应该在manager中这样做? 希望下面的代码能澄清我的需求
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);
}
# 1 楼答案
您不需要这个字段,因为您可以从它的
id
判断实体是否已经被持久化。如果id
是null
,则它是新的,否则它不是如果您确实需要一个方法来检查
id
字段的存在,那么您只需要一个方法在大多数情况下,建议在
@Id
旁边使用@GeneratedValue
,这样Hibernate将为您处理ID如果确实需要该字段,请使用
id
字段在构造函数或setter方法中设置其值(取决于Hibernate使用的内容)# 2 楼答案
Basicali Hibernate不会处理@Transient字段。所以你必须控制自己。
默认情况下,布尔变量为false。如果你想把它设置为真,那么你必须根据亚当的答案来编写逻辑
例如
}
您必须单独处理删除逻辑