首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >主键冲突Java Spring Boot SQL Server

主键冲突Java Spring Boot SQL Server
EN

Stack Overflow用户
提问于 2020-07-01 20:09:01
回答 1查看 483关注 0票数 0

在我的项目中,我有Events实体和MyLocation实体。

MyLocation id是event.eventStartTime (ISOString) + event.eventName,当我尝试更新事件名称(不再与MyLocation字符串名称相关)时遇到问题,这是错误:

代码语言:javascript
复制
 Violation of PRIMARY KEY constraint 'PK__my_locat__72E12F1A88A314B4'. Cannot insert duplicate key in object 'dbo.my_location'. The duplicate key value is (2020-06-25T14:00:01.235ZWeddingT&Z).

代码如下:

代码语言:javascript
复制
@Entity
@Table(name = "Events")
public class Event {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long eventID;
    @Column(nullable = false)
    private String eventName;
    @OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    private MyLocation eventLocation;
    @column
    private TimeStamp eventStartTime;
    ....
代码语言:javascript
复制
@Entity
public class MyLocation {
    @Id
    private String name;
    @Column
    private double longitude;
    @Column
    private double latitude;
    .....

该问题是否与MyLocation中的@Id有关?或任何其他解决方案?

EN

回答 1

Stack Overflow用户

发布于 2020-07-01 20:30:38

您似乎正在尝试创建重复的MyLocation条目。如何生成位置名称,或者对唯一的位置名称是否有足够的检查逻辑?

此外,您还可以使用其他类型作为事件表的主键。比如uuid。

代码语言:javascript
复制
@Id
@GeneratedValue(generator = “UUID”)
    @GenericGenerator(
        name = “UUID”,
        strategy = “org.hibernate.id.UUIDGenerator”,
    )
@Column(name = “id”, updatable = false, nullable = false)
private UUID id;

或者你可以有一个自动递增的id:

代码语言:javascript
复制
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62676518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档