我有一张叫AdminRole的表
ADMIN_ROLE_ID |描述| NAME |已归档
我需要从AdminRole
中删除一条记录,因为管理员角色非常重要。我需要执行软删除而不是硬删除。为此,我尝试使用@SqlDelete
休眠注释。我的实体类是这样的:
@Entity
@table(name="ADMINROLE")
@SqlDelte(sql="UPDATE ADMINROLE SET ARCHIVED = 'Y' WHERE ADMIN_ROLE_ID=?")
public class AdminRole{
@column(name="ADMIN_ROLE_ID" )
protected Lond id;
@column(name="DESCRIPTION" )
protected String description;
@column(name="NAME" )
protected String name;
...
...
}
当我创建管理员角色
ARCHIVED
成功设置为N
并显示在前端时,如果Y
中的ARCHIVED
记录在前端不可见,则必须在前端显示记录结束。但是问题是当我尝试从前端删除N
时,由于此记录显示在前端,因此admin role
并未设置为ARCHIVED
。在DAO中
public AdminDAO {
protected EntityManager manager;
public void remove(Serializable entity){
manager.remove(entity)
}
}
为什么
Y
对我不起作用?有人可以帮助我吗?日志文件未引发任何异常。什么时候该@SqlDelete
将被执行? 最佳答案
我自己解决了这个问题,问题只在我这边,我不小心更新了另一个表,现在我为adminrole
表更改了
之前@SqlDelte(sql="UPDATE ROLE SET ARCHIVED = 'Y' WHERE ROLE_ID=?")
后@SqlDelte(sql="UPDATE ADMINROLE SET ARCHIVED = 'Y' WHERE ADMIN_ROLE_ID=?")
发布此问题后,我意识到自己的错误。