【问题标题】:Resolved [org.springframework.dao.DataIntegrityViolationException: could not execute statement已解决 [org.springframework.dao.DataIntegrityViolationException: 无法执行语句
【发布时间】:2022-08-03 12:15:38
【问题描述】:
package com.codedecode.demo.entity;

import java.io.Serializable;
import java.util.Collection;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;

import com.fasterxml.jackson.annotation.JsonIgnore;

import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

@Getter
@Setter
@NoArgsConstructor
@Entity
@Table(name = \"users\")
public class User implements Serializable {

/**
 * 
 */
private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

@Column(name = \"email\", unique = true, length = 100)
private String email;

@OneToMany(mappedBy = \"user\", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@EqualsAndHashCode.Exclude
@ToString.Exclude
@JsonIgnore
private Collection<CV> cv;

@OneToMany(mappedBy = \"user\", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@EqualsAndHashCode.Exclude
@ToString.Exclude
@JsonIgnore
private Collection<JobApplication> jobApplication;

@OneToMany(mappedBy = \"user\", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@EqualsAndHashCode.Exclude
@ToString.Exclude
@JsonIgnore
private Collection<CurriculumVitae> curriculumVitae;

@OneToMany(mappedBy = \"user\", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@EqualsAndHashCode.Exclude
@ToString.Exclude
@JsonIgnore
private Collection<CoverLetter> coverLetter;

@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = \"users_roles\", joinColumns = @JoinColumn(name = \"user_id\"), inverseJoinColumns = @JoinColumn(name = \"role_id\"))
private Set<Role> roles = new HashSet<>();

@OneToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = \"address_id\", referencedColumnName = \"id\")
@ToString.Exclude
@JsonIgnore
private Address address;

@Column(name = \"password\")
private String password;

@Column(name = \"birth_date\")
private Date birthDate;

@Column(name = \"name\")
private String name;

@Column(name = \"description\")
private String description;

@Column(name = \"career_goals\")
private String careerGoals;

@Column(name = \"university\")
private String university;

@Column(name = \"rating\")
private String rating;

@Column(name = \"phone\")
private String phone;

@OneToMany(mappedBy = \"user\", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@EqualsAndHashCode.Exclude
@ToString.Exclude
@JsonIgnore
private Collection<Notification> notifications;

@Column(name = \"maria_status\")
private String mariaStatus;

@OneToMany(mappedBy = \"user\", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@EqualsAndHashCode.Exclude
@ToString.Exclude
@JsonIgnore
private Collection<Degree> degrees;

@OneToMany(mappedBy = \"user\", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@EqualsAndHashCode.Exclude
@ToString.Exclude
@JsonIgnore
private Collection<Posting> postings;

@Column(name = \"gender\")
private String gender;

@OneToMany(mappedBy = \"user\", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@EqualsAndHashCode.Exclude
@ToString.Exclude
@JsonIgnore
private Collection<Language> languages;

@OneToMany(mappedBy = \"user\", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@EqualsAndHashCode.Exclude
@ToString.Exclude
@JsonIgnore
private Collection<Experience> experiences;

@Column(name = \"taxt_number\")
private Long taxtNumber;

@Column(name = \"images\")
private String images;

@Column(name = \"candidate_cv\")
private String candidateCV;

@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = \"desired_job_id\", referencedColumnName = \"id\")
private DesiredJob desiredJob;

@OneToMany(mappedBy = \"candidate\", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@EqualsAndHashCode.Exclude
@ToString.Exclude
@JsonIgnore
private Collection<Message> candidateMessage;

@OneToMany(mappedBy = \"recruiter\", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@EqualsAndHashCode.Exclude
@ToString.Exclude
@JsonIgnore
private Collection<Message> recruiterMessage;

// @OneToOne(fetch = FetchType.LAZY, optional = false) // @JoinColumn(name = \"candidate_profile_save_id\", referencedColumnName = \"id\") @OneToOne(mappedBy = \"user\", cascade = CascadeType.ALL, fetch = FetchType.LAZY) @ToString.Exclude @JsonIgnore private CandidateProfileSaved candidateProfileSaved;

@OneToMany(mappedBy = \"user\", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@ToString.Exclude
@JsonIgnore
private Collection<SavedJob> savedJob;

@OneToMany(mappedBy = \"user\", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@EqualsAndHashCode.Exclude
@ToString.Exclude
@JsonIgnore
private Collection<AppliedJob> appliedJob;

public User(Long id, String email) {
    this.id = id;
    this.email = email;
}

@Override
public String toString() {
    StringBuilder builder = new StringBuilder();
    builder.append(\"User [id=\");
    builder.append(id);
    builder.append(\", email=\");
    builder.append(email);
    builder.append(\", address=\");
    builder.append(address);
    builder.append(\", password=\");
    builder.append(password);
    builder.append(\", name=\");
    builder.append(name);
    builder.append(\"]\");
    return builder.toString();
}

}

我不知道为什么当我尝试从邮递员调用 api 将更多用户插入数据库时​​,我有一个错误是:\“违反唯一键约束 \'UK_hbvhqvjgmhd5omxyo67ynvbyp\'。无法在对象 \'dbo 中插入重复键。 users\'。重复的键值为 (1)。\"

为什么用户的主键不递增?

    标签: sql-server spring-boot hibernate spring-data-jpa orm


    【解决方案1】:

    表的 id 列中已经有标识。所以,也许,Hibernate 必须启用 IDENTITY_INSERT 选项并尝试插入行。

    【讨论】:

    • 你能给出关于spring boot的解决方案吗?
    • 您可以运行 sp_help users 并显示此表的约束吗?
    • 谢谢,但我找到了修复方法,错误来自 mssql
    • 你是怎么解决的?
    • 创建数据库 [DATABASE_NAME] COLLATE Latin1_General_100_BIN2_UTF8;
    【解决方案2】:

    创建数据库 [DATABASE_NAME] COLLATE Latin1_General_100_BIN2_UTF8;

    【讨论】:

      猜你喜欢
      • 2020-11-16
      • 2016-08-18
      • 2022-11-09
      • 1970-01-01
      • 2014-03-10
      • 2019-11-28
      • 1970-01-01
      • 2013-06-28
      • 2016-03-28
      相关资源
      最近更新 更多