我正在为我的应用程序使用 Spring 和 Hibernate。
我只允许在需要设置字段 isActive=false 的应用程序中进行逻辑删除。我没有在所有实体中重复相同的字段,而是创建了一个基类,其中包含“isActive”的属性和 getter-setter。
因此,在删除期间,我调用了 update() 方法并将 isActive 设置为 false。
我无法让它工作。如果有人有任何想法,请告诉我。
基础实体
public abstract class BaseEntity<TId extends Serializable> implements IEntity<TId> {
@Basic
@Column(name = "IsActive")
protected boolean isActive;
public Boolean getIsActive() {
return isActive;
}
public void setIsActive(Boolean isActive) {
isActive= isActive;
}
}
子实体
@Entity(name="Role")
@Table(schema = "dbo")
public class MyEntity extends BaseEntity {
//remaining entities
}
hibernate 实用类
public void remove(TEntity entity) {
//Note: Enterprise data should be never removed.
entity.setIsActive(false);
sessionFactory.getCurrentSession().update(entity);
}
最佳答案
尝试将 setIsActive
方法中的代码替换为:
public void setIsActive(Boolean isActive) {
this.isActive = isActive;
}
在您的代码中使用不带 this
的变量名可能会产生歧义...
我认为你还应该在你的抽象类中添加@MappedSuperclass
注解来实现字段继承。
关于java - 在 hibernate 中的一个公共(public)位置进行逻辑删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24038072/