Най-добрият начин да постигнете меко изтриване с Hibernate е да използвате анотацията @SQLDelete във вашите класове.
уверете се, че картографирането ви е настроено на каскадно изтриване
извикването на session.delete(yourClass) трябва да постигне вашето меко изтриване
//used to overide the normal delete behavior
@SQLDelete(sql="UPDATE (table_name) SET deleted = '1' WHERE id = ?")
//optional Use this to exclude deleted element from get
@Where(clause="deleted <> '1'")
//OR (Filter may also be used if you need to load deleted items occasionally)
@FilterDef(name="ProductFilter",defaultCondition="deleted <> 1 ")