【问题标题】:Override default remove()/DELETE in JPA/Hibernate覆盖 JPA/Hibernate 中的默认 remove()/DELETE
【发布时间】:2012-02-21 18:30:17
【问题描述】:

我们的客户希望将记录标记为已删除,而不是删除记录。我们正在使用 JPA2/Hibernate。我想做类似以下的事情:

@Entity
@Table(name="TABLE")
@ActionOverride(action="delete", with="activeFlag = false")
public class Table {
    @Column(name="ACTIVE_FLAG")
    boolean activeFlag;

    // ...

}

我过去曾这样做过,但似乎找不到正确的语法和注释。

【问题讨论】:

标签: hibernate


【解决方案1】:

看看hibernate documentation,你要找的注解是@SQLDelete

@Entity
@Table(name="TABLE")
@SQLDelete(sql = "UPDATE TABLE SET ACTIVE_FLAG = false WHERE id = ?")
public class Table {
  @Column(name="ACTIVE_FLAG")
  boolean activeFlag;
  // ...
}

【讨论】:

  • 我正在使用相同的@SQLDelete,但是当它已经插入时可以工作,但在我的情况下,我想在一个线程中更新标志或(相同的@Transactional
【解决方案2】:

注解好像是org.hibernate.annotations.SQLDelete:

覆盖Hibernate默认DELETE方法的SqlDelete注解

您在 sql 属性中设置自定义更新 SQL。

【讨论】:

  • 我正在使用相同的@SQLDelete,但是当它已经插入时可以使用,但在我的情况下,我想在一个线程中更新标志或(相同的@Transactional
猜你喜欢
  • 1970-01-01
  • 2014-03-05
  • 1970-01-01
  • 2011-07-21
  • 1970-01-01
  • 2011-12-20
  • 2020-07-12
  • 2015-05-26
相关资源
最近更新 更多