2012-02-21 3 views
4

Plutôt que de supprimer un enregistrement, notre client souhaite marquer un enregistrement comme supprimé. Nous utilisons JPA2/Hibernate. Je voudrais faire quelque chose comme ce qui suit:Remplacer default remove()/DELETE dans JPA/Hibernate

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

    // ... 

} 

Je l'ai fait dans le passé, mais je ne peux pas sembler trouver la bonne syntaxe et d'annotation.

+0

Vous pouvez le faire avec un DeleteEventListener, comme décrit [ici] [1] [1]: http://stackoverflow.com/questions/5404964/hibernate-overwrite-sql- supprimer-avec-héritage/10549817 # 10549817 – slipset

Répondre

8

Jetez un oeil à l'hibernate documentation, l'annotation que vous recherchez est @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

L'annotation semble être org.hibernate.annotations.SQLDelete:

SqlDelete Annotation pour défaut Hibernate méthode écraser SUPPRIMER

Vous définissez votre mise à jour personnalisée SQL dans l'attribut sql.