【问题标题】:Automatically assigning value to transient attribute自动为瞬态属性赋值
【发布时间】:2016-08-25 02:32:28
【问题描述】:
我正在使用 javax.persistence.Entity 中的 @Entity 来创建我的实体,在这种特殊情况下,我必须创建一个瞬态属性(分配的私有布尔值;),并且我正在使用 org.springframework.data.repository 中的 PagingAndSortingRepository 来创建接口来管理我的数据库实体。
当 List (OneToMany) 属性为空时,我需要分配此值(布尔分配),所以我使用 if 子句以编程方式执行此操作,问题是我必须在任何地方都编写 if 子句,我想知道是否可以以某种方式自动分配该变量。
提前致谢。
【问题讨论】:
标签:
java
spring
entity-framework
jpa
transient
【解决方案1】:
如果您需要在持久化到数据库之前设置此标志的值,我建议使用实体侦听器@PrePersist,基本可以让您在持久化对象之前执行某些逻辑,方法是您可以检查 Array 是否为空并将值设置为 false。
还有其他事件,例如:
@PostLoad在实体加载到当前实体后执行
持久化上下文或实体已被刷新。
@PostLoad
public void setAssigned() {
//Your logic for set to true or false the transient variable.
}
我认为这是一种选择,可以只在一个由提供商管理的地方执行逻辑。阅读更多关于它的信息here