表1:
Field |
Type |
Null |
Key |
Default |
Extra |
UserID |
int(11) |
NO |
PRI |
NULL |
auto_increment |
Password |
varchar(20) |
NO |
|
|
|
Username |
varchar(25) |
NO |
|
|
|
Email |
varchar(60) |
NO |
|
|
|
表2:
Field |
Type |
Null |
Key |
Default |
Extra |
UserID |
int(11) |
NO |
MUL |
|
|
PostID |
int(11) |
NO |
PRI |
NULL |
auto_increment |
Title |
varchar(50) |
NO |
|
|
|
Summary |
varchar(500) |
NO |
|
|
|
错误:
com.mysql.jdbc.exceptions.MySQLIntegrityConstraintViolationException:
无法添加或更新子行:外键约束失败
(myapp/table2,约束table2_ibfk_1外键(UserID))
引用表1 (UserID))
我做错了什么?我读了http://www.w3schools.com/Sql/sql_foreignkey.asp,我不知道有什么问题。
只是一点点修复:
使JoinColumn在Table1中为'nullable=true', 'UserID'字段在Table2中为'insertable=false'和'nullable=true'。
表1实体:
@OneToMany(targetEntity=Table2.class, cascade = CascadeType.ALL)
@JoinColumn(name = "UserID", referencedColumnName = "UserID", nullable = true)
private List<Table2> table2List;
表2实体:
@Column(insertable = false, nullable = true)
private int UserID;
只是一点点修复:
使JoinColumn在Table1中为'nullable=true', 'UserID'字段在Table2中为'insertable=false'和'nullable=true'。
表1实体:
@OneToMany(targetEntity=Table2.class, cascade = CascadeType.ALL)
@JoinColumn(name = "UserID", referencedColumnName = "UserID", nullable = true)
private List<Table2> table2List;
表2实体:
@Column(insertable = false, nullable = true)
private int UserID;