我正在尝试插入 Member
类,但它返回以下异常。
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:
Duplicate entry '' for key 'UK_7pn834d04yft1rkvpqf0viuyc'
代码
Member member = new Member(email, encodedPassword,
"USER", false, firstName,
lastName);
....
session.save(member);
实体
@Entity
public class Member {
@Id
@Column(name = "username", nullable = false, unique = true)
private String email;
@Column(nullable = false)
private String password;
@Column(nullable=false)
private String authority;
@Column(nullable = false)
private boolean enabled;
@Column(nullable = false)
String fname;
@Column(nullable = false)
String lname;
@OneToMany
List<Product> products = new ArrayList<Product>();
@OneToMany(mappedBy = "requester")
private Set<Friendship> friendRequests = new HashSet<Friendship>();
@OneToMany(mappedBy = "friend")
private Set<Friendship> friends= new HashSet<Friendship>();
.....
}
@Entity
public class Friendship implements Serializable {
private static final long serialVersionUID = -12799066578787745989L;
@Id
@ManyToOne
@JoinColumn(referencedColumnName = "username")
Member requester;
@Id
@ManyToOne
@JoinColumn(referencedColumnName = "username")
Member friend;
@Temporal(javax.persistence.TemporalType.DATE)
Date date;
@Column(nullable = false)
boolean active;
.....
}
最佳答案
检查您是否将空字符串添加到映射到 Member
的表中。
由于 Duplicate entry '' for key 'UK_7pn834d04yft1rkvpqf0viuyc'
= 您正在尝试第二次添加相同的值。
看看这个:
@Column(name = "username", nullable = false, unique = true)
私有(private)字符串电子邮件;
由于您已将此标记为 unique
可能您正在尝试将 email
第二次添加为空字符串,但您对其有限制,表示您不能添加相同的值.
关于java - Hibernate 返回 com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException : Duplicate entry,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31499180/