2012-02-21 49 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。