2012-02-21 42 views
4

我们的客户不想删除记录,而是将记录标记为已删除。我们正在使用JPA2/Hibernate。我想这样做如下:覆盖JPA /休眠中的默认remove()/ DELETE

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

    // ... 

} 

我在过去做到了这一点,但我似乎无法找到正确的语法和注释。

+0

你可以用DeleteEventListener做到这一点,如描述这里] [1] [1]:http://stackoverflow.com/questions/5404964/hibernate-overwrite-sql-删除与 - inheritace/10549817#10549817 – slipset 2012-05-11 10:43:56

回答

8

查看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; 
    // ... 
} 
1

注释似乎是org.hibernate.annotations.SQLDelete

SQLDELETE诠释覆盖Hibernate的默认DELETE方法

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