当前位置: 首页 > 知识库问答 >
问题:

Hibernate-软删除-多个参数

纪勇军
2023-03-14

当我试图根据@sqldeleteAnotation中的多个参数“删除”行时,我遇到了软删除问题。

下面是我的代码:

@Entity
@Table(name = "department")
@DynamicInsert
@DynamicUpdate
//Override the default Hibernation delete and set the deleted flag rather than deleting the record from the db.
@SQLDelete(sql="UPDATE department SET valid_to = NOW(), active_f = 0 WHERE id = ? OR parent_department_id = ?")
//Filter added to retrieve only records that have not been soft deleted.
@Where(clause="valid_to IS NULL and active_f = 1")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class Department implements Serializable {
    ...  
}

当我运行这段代码时,我得到一个错误:

有没有人知道怎么解决这个问题?
先谢谢你。

共有1个答案

徐奇逸
2023-03-14

引发错误是因为@sqldelete批注中有多个参数。无法设置@sqldelete查询的参数。Hibernate在内部拾取在session.delete调用期间传递的值。

删除一个基于主键以外的东西的数据不是一个好主意。所以,如果你只是使用下面的方法,它就会像一个魅力一样工作。

@SQLDelete(sql="UPDATE department SET valid_to = NOW(), active_f = 0 WHERE id = ?")
 类似资料:
  • 问题内容: 我在我的数据库3个表:,和 学生可以有多个课程,课程可以有多个学生。和之间存在多对多关系。 我为我的项目和课程添加了3个案例。 (a)当我添加用户时,它会保存得很好, (b)当我为学生添加课程时,它会在-预期行为中创建新的行。 (三)当我试图删除学生,则在删除适当的记录和,但它也删除其中不需要的记录。即使课程中没有任何用户,我也希望课程在那里。 下面是我的表和注释类的代码。 这是Hib

  • 软删除 在实际项目中,对数据频繁使用删除操作会导致性能问题,软删除的作用就是把数据加上删除标记,而不是真正的删除,同时也便于需要的时候进行数据的恢复。 要使用软删除功能,需要引入SoftDelete trait,例如User模型按照下面的定义就可以使用软删除功能: <?php namespace app\index\model; use think\Model; use think\model\

  • 我的实体: 这就是我的问题,实际上很少有。 问题1: 我删除了一个Cat对象,设置了cascade类型。所有在Cat中拥有的列表中,因此当我删除Cat对象时,UC中带有Cat的所有记录都将被删除,但我得到“已删除的对象将通过级联重新保存”,这是因为我在UC中与用户有另一个关系,用户将UC存储在列表中。当我从UC中删除Cat对象和记录时,我不想删除用户对象,因此在UC中的@ManyToOne上设置c

  • 软删除Deleted Deleted可以让您不真正的删除数据,而是标记一个删除时间。使用此特性需要在xorm标记中使用deleted标记,如下所示进行标记,对应的字段必须为time.Time类型。 type User struct { Id int64 Name string DeletedAt time.Time `xorm:"deleted"` } 在Delete()

  • 问题内容: 有没有更好的办法重写: 我无法使用, 因为它会删除所有我不想要的类。 问题答案: 从,类参数: 要从元素中删除的一个或多个CSS类,这些类之间用空格隔开。

  • 使用Spring Boot 1.4.0和MySql 5.7 我有两个table并且它是单向的@manytomany,但是在角色的父端,我想删除权限hibernate会自动删除它自己和link-table记录: > 权限