java - 在 hibernate 中的一个公共(public)位置进行逻辑删除

标签 java hibernate soft-delete

我正在为我的应用程序使用 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/

相关文章:

java - 在 Java 中链接变量和文本框

使用 Tapestry hibernate sessionManager

relational-database - 软删除与数据库存档

java - 为什么Hibernate会主动持久化一个对象?

ruby-on-rails - 即使被软删除也需要返回:name of an object,(使用偏执)

model-view-controller - CakePHP 软删除的数据仍然显示在模型关联中

java - 如何使用 izpack 将我的 jar 应用程序制作为安装程序?

java - 使用 javax.net.ssl.SSLContext 时禁用弱 ssl 密码

java - 如何使用java编程语言将java String转换为mongodb_id的ObjectId

java - 使用分页处理大量数据库条目会随着时间变慢