我有两个表通知和消息。
Message.java
...
...
@Table(name = "message",
uniqueConstraints = {@UniqueConstraint(name = "UniqueMessage",
columnNames = { "message_id" })})
public class Message implements Serializable {
@Id
@Column(name = “message_id")
private int messageId;
@Column(name = "description")
private String description;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "start_time")
private Date startTime;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "end_time")
private Date endTime;
@PrePersist
@PreUpdate
public void generateMessageId(){
this.messageId = Math.abs(Objects.hash(this.getDescription(),
this.getStartTime().getTime() / 1000));
}
我的用例是——我将创建一条具有特定描述和开始时间的消息。如果我再次收到相同的消息,我应该能够更新结束时间。MessageId在方法generateMessageId下单独计算,因为这将作为一个标识符来查找消息是否已经保存。如果是,我将更新消息。它对第一条消息很有效,但当我尝试用更新的endTime再次保存时,我得到了
错误:重复的键值违反了唯一约束“message\u pkey”
步骤:我尝试过:
Message m1 = new Message();
m1.setDescription(“fake”);
m1.setStartTime(“2022-01-03T12:05:00”)
messageRepository.save(m1);
This works well. I can see a row in database with
Message_id description start_time end_time
46536723 fake 2022-01-03T12:05:00 null
Message m2 = new Message();
m2.setDescription(“fake”);
m2.setStartTime(“2022-01-03T12:05:00”);
m2.setEndTime(“2022-01-05T12:00:00)
messageRepository.save(m2);
我得到错误:重复的键值违反了唯一的约束错误。jpa不是应该找到现有的id并对行进行更新而不是插入吗?
请建议此方法是否看起来像一种解决方法。
您正在尝试更新消息endTime,第一次,它可以工作,因为当您尝试更新时,现在没有该消息的条目,但您没有设置id。默认情况下,id为零,如果id为零,它将尝试保存消息,而不是更新。
要解决此问题,您可以检查(通过逐条消息查找消息,因为消息是唯一的)是否存在该消息,然后更新endTime。
我有这样的桌子: 我试图插入一些查询到另一个表(device_usage_test1)。这是我的表: 这是我的插入命令: 稍后,我将在device_usage_test1上创建一个插入查询。所以我的设备序列必须是唯一的。但是当我尝试用deviceserial (unique)插入时。它显示错误:< code >错误:重复的键值违反了唯一约束“device _ usage _ device seri
我有一个模型,每次创建一个Post时,我都希望同时创建一个的新实例。 所以在邮政。rb我在保存后使用回调,然后编写一个私有方法: 但当创建提案时,我会遇到以下错误: PG::唯一违反:错误:重复的键值违反唯一约束"moderations_reportable"详细信息:键(reportable_type,reportable_id)=(Post,25)已经存在。:插入到"适度"("blog_id"
在我从事的一个项目中,这个问题发生过几次,尽管我使用了我在这个网站上找到的“python manage . py sqlsequencereset”修复程序,它工作了一段时间,然后又开始抛出错误。 我一直得到的错误非常简单: 在我看来,我有: 我现在已经做了几次sqlequence重置,然后错误在几周后返回。我没有导入任何数据,但我的同事正在现场使用他们的手机创建新对象,一次一个。 运行sqlse
我在创建应用程序时遇到了这个问题。因此,每当我添加第一条评论时,问题都不会出现,但当我第二次尝试时,我会收到此错误: 重复的键值违反了唯一约束“tripplanner_discussion_author_id_key”详细信息:键 (author_id)=(1) 已存在。 我试图把放到 models.py,但它根本没有帮助。 models.py views.py 更新 当我登录到另一个用户时,一个
我正在我的Laravel应用程序中使用psql。我正在尝试创建我的用户,并且不断出现此错误 唯一冲突:7错误:重复键值违反唯一约束“users\u pkey” 我做了我想做的事吗? 当我用钩住我的应用程序时,我现在所拥有的一切都会起作用。 任何提示/建议将对我意义重大。
我在postgresql中是新的,当我测试我的代码以插入时,我收到以下错误消息 错误异常('error','23505',重复的键值违反了唯一约束“foo_column_key”); 我曾尝试在cursor.execute()代码后使用connection.commit()或connection.rollback()。 问题: 如何在不重新创建类似于表的命令“select setval('foo_