@Entity
@Table(name = "Country")
@SQLDelete(sql = "UPDATE Country SET date_deleted=NOW() WHERE code = ?")
@Where(clause = "date_deleted is NULL")
public class Country {
@Id
@Column(name = "code", nullable = false)
private String code;
@Column(name = "description")
private String description;
@Column(name = "date_deleted")
private Date date_deleted;
....
}
当我逻辑删除数据库中代码为“U1”的实体时,我创建了代码为“Ü1”的新实体,出现异常“重复条目”。Hibernate是否有注释来解决此问题?
编辑:
当我插入一个具有相同代码的新实体时,错误如下:
组织。postgresql。util。PSQLException:错误:重复的键值违反唯一约束“country_pkey”详细信息:键(代码)=(AA)已存在。
表格如下:
CREATE TABLE public.country(
code bpchar(2) NOT NULL,
description bpchar(50) NULL,
date_deleted timestamp NULL,
CONSTRAINT country_pkey PRIMARY KEY (code),
CONSTRAINT constraint_country UNIQUE (date_deleted, code) -- I add this constraint
);
由于您管理code
列,并且可以有多个具有相同代码的条目,因此一种解决方案是自动生成id
列。
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
这将使您能够删除代码为“U1”的对象,并添加另一个代码相同的对象。您可以查看这个很棒的教程:https://vladmihalcea.com/the-best-way-to-soft-delete-with-hibernate/
1. 前言 在 SQL Delete 一节中,我们介绍了 SQL 的基本删除功能,今天我们将以分类和实战的角度来进一步学习 SQL 的删除。 删除是一个很危险的操作,试想一下如果开发人员不慎操作失误,误删了一些数据,在数据未备份的情况下,该数据无法恢复,造成了损失绝对是致命的。 道路千万条,安全第一条。因此为了保证数据的安全性,在真正的企业级应用中都会默认的采用逻辑删除(软删除)的方式来处理数据删
问题内容: Hibernate不会删除我的行: 支出: 当我直接在SQL中尝试时,SQL语法有效。直接SQL语法: 对应: 表: 我想这很容易,因为到目前为止,对于我来说一切都还不错。我没有错误或其他任何事情,只是没有发生删除。 任何帮助表示赞赏。 问题答案: 您需要开始并提交事务。 还可能需要关闭会话,然后更改才能在数据库中可见。
问题内容: 是否可以使用PHP创建,编辑和删除crontab作业? 我知道如何列出Apache用户的当前crontab作业: 但是如何用PHP添加cron作业呢?’crontab -e’只会打开一个文本编辑器,您必须在保存文件之前手动编辑条目。 以及如何使用PHP删除cron作业?同样,您必须通过’crontab -e’手动执行此操作。 使用这样的作业字符串: 如何使用PHP将其添加到cronta
问题内容: 如果我有3个相互连接的类。 room等级 person clas table_phone 我要在这里执行的是实现软删除,即在已删除项目的已删除列中插入值1,在现有项目中插入值0。另外,我还希望级联删除操作,因此,如果删除任何会议室,那么与该会议室相关的每个人和电话也将被删除(“已删除”列值设置为1)。我的问题是我该怎么做?有什么优雅的方法可以实现这些东西吗? 问题答案: 使用Hiber
我有一个struts项目,我的客户给了我完整的业务逻辑类。他需要这个忘恩负义的人,昂首阔步,冬眠。 哪一种最好,要将业务逻辑放到我的Dao层,需要为业务逻辑添加一个附加的服务层。 一些strut项目我发现动作类直接访问道。 请建议我哪个更好choice.help高度赞赏。 谢谢,
用户表逻辑删除,那么用户的附表需要跟着逻辑删除么?