我有两个表,当我试图保存通常的实体,扔
组织。springframework。刀。DataIntegrityViolationException:无法添加或更新子行:外键约束失败(formato_Inscripion
roles_Usario
,约束roles_Usario_ibfk_1
外键(ID_Usario
,CLAVE_Usario
)引用Usarios
(ID
,CLAVE
));SQL[n/a];约束[null];嵌套的异常是org。冬眠例外ConstraintViolationException:无法添加或更新子行:外键约束失败(formato_Inscripion
roles_Usario
,constraintroles_Usario_ibfk_1
外键(ID_Usario
,CLAVE_Usario
)参考Usarios
(ID
,
CREATE TABLE USUARIOS( ID INT AUTO_INCREMENT, CLAVE CHAR(10) UNIQUE,
USUARIO VARCHAR(10),
PASSWORD VARCHAR(10) NOT NULL,
CLAVE_TIPO_USUARIO CHAR(10) NOT NULL,
PRIMARY KEY(ID,CLAVE),
FOREIGN KEY(CLAVE_TIPO_USUARIO) REFERENCES TIPO_USUARIO(CLAVE) )ENGINE=INNODB;
CREATE TABLE ROLES(
CLAVE VARCHAR(10) UNIQUE PRIMARY KEY,
DESCRIPCION VARCHAR(50)
)ENGINE=INNODB;
CREATE TABLE ROLES_USUARIO(
CLAVE_ROL VARCHAR(10) ,
ID_USUARIO INT ,
CLAVE_USUARIO CHAR(10) ,
FOREIGN KEY(ID_USUARIO,CLAVE_USUARIO) REFERENCES USUARIOS(ID,CLAVE),
FOREIGN KEY(CLAVE_ROL) REFERENCES ROLES(CLAVE)
)ENGINE=INNODB;
CREATE TABLE TIPO_USUARIO(
CLAVE CHAR(10) PRIMARY KEY,
NOMBRE VARCHAR(10) UNIQUE,
DESCRIPCION VARCHAR(10)
)ENGINE=INNODB;
我的JPA模型是
@Embeddable
public class UsuariosId implements java.io.Serializable {
private int id;
private String clave;
@GeneratedValue (strategy = GenerationType.IDENTITY)
@Column(name = "ID" )
public int getId() {
return this.id;
}
public void setId(int id) {
this.id = id;
}
@Column(name = "CLAVE", length = 10)
public String getClave() {
return this.clave;
}
public void setClave(String clave) {
this.clave = clave;
}
}
用户实体
@Entity
@Table(name = "USUARIOS", catalog = "", uniqueConstraints = @UniqueConstraint(columnNames = "CLAVE"))
public class Usuarios implements java.io.Serializable {
private UsuariosId id;
private Set<Roles> roles;
//private String claveTipoUsuario;
private List<Asigna> asigna;
public Usuarios() {
}
@EmbeddedId
@AttributeOverrides({ @AttributeOverride(name = "id", column = @Column(name = "ID")),
@AttributeOverride(name = "clave", column = @Column(name = "CLAVE", unique = true, length = 10)) })
public UsuariosId getId() {
return this.id;
}
public void setId(UsuariosId id) {
this.id = id;
}
@Column(name = "USUARIO", length = 10)
public String getUsuario() {
return this.usuario;
}
public void setUsuario(String usuario) {
this.usuario = usuario;
}
@Column(name = "PASSWORD", nullable = false, length = 10)
public String getPassword() {
return this.password;
}
@ManyToMany(targetEntity=Roles.class,
cascade=CascadeType.ALL)
@JoinTable(name="ROLES_USUARIO", joinColumns={@JoinColumn(name = "ID_USUARIO", referencedColumnName="ID"),
@JoinColumn(name="CLAVE_USUARIO",referencedColumnName="CLAVE")}
, inverseJoinColumns={@JoinColumn(name="CLAVE_ROL",referencedColumnName="CLAVE")})
public Set<Roles> getRoles() {
return roles;
}
public void setRoles(Set<Roles> roles) {
this.roles = roles;
}
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="CLAVE_TIPO_USUARIO")
public TipoUsuario getClavetipousuario() {
return clavetipousuario;
}
public void setClavetipousuario(TipoUsuario clavetipousuario) {
this.clavetipousuario = clavetipousuario;
}
}
角色实体
@Entity
@Table(name = "ROLES", catalog = "", uniqueConstraints = @UniqueConstraint(columnNames = "CLAVE"))
public class Roles implements java.io.Serializable {
private String clave;
private String descripcion;
private Set<Usuarios> usuarios;
public Roles() {
}
public Roles(String clave, String descripcion) {
this.clave = clave;
this.descripcion = descripcion;
}
@Id
@Column(name = "CLAVE", unique = true, length = 30)
public String getClave() {
return this.clave;
}
public void setClave(String clave) {
this.clave = clave;
}
@Column(name = "DESCRIPCION", length = 50)
public String getDescripcion() {
return this.descripcion;
}
public void setDescripcion(String descripcion) {
this.descripcion = descripcion;
}
//@MapsId("id")
@ManyToMany(mappedBy="roles")
public Set<Usuarios> getUsuarios() {
return usuarios;
}
public void setUsuarios(Set<Usuarios> usuarios) {
this.usuarios = usuarios;
}
}
@Entity
@Table(name = "TIPO_USUARIO", catalog = "", uniqueConstraints = @UniqueConstraint(columnNames = "NOMBRE"))
public class TipoUsuario implements java.io.Serializable {
private String clave;
private String nombre;
private String descripcion;
private List<Usuarios> usuarios;
public TipoUsuario() {
}
public TipoUsuario(String clave) {
this.clave = clave;
}
public TipoUsuario(String clave, String nombre, String descripcion) {
this.clave = clave;
this.nombre = nombre;
this.descripcion = descripcion;
}
@Id
@Column(name = "CLAVE", unique = true, nullable = false, length = 10)
public String getClave() {
return this.clave;
}
public void setClave(String clave) {
this.clave = clave;
}
@Column(name = "NOMBRE", unique = true, length = 10)
public String getNombre() {
return this.nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
@Column(name = "DESCRIPCION", length = 10)
public String getDescripcion() {
return this.descripcion;
}
public void setDescripcion(String descripcion) {
this.descripcion = descripcion;
}
@OneToMany(mappedBy="clavetipousuario")
public List<Usuarios> getUsuarios() {
return usuarios;
}
public void setUsuarios(List<Usuarios> usuarios) {
this.usuarios = usuarios;
}
}
My TestClass
@Repository
public class UsuariosDaoTest extends TesteBase {
private static Logger logger = LoggerFactory.getLogger(UsuariosDaoTest.class);
Integer inicio;
String dato;
@Autowired
RolesDao rolesDao;
@Autowired
UsuariosDao usuariosdao;
@Autowired
TipoUsuarioDao tipousuariodao;
@Test
public void testdao(){
assertNotNull(usuariosdao);
}
@Test
public void testaddDao(){
Roles rol1 = (Roles) rolesDao.getRolByClave("rol003");
HashSet roles = new HashSet<Roles>();
roles.add(rol1);
Usuarios u = new Usuarios();
UsuariosId uid = new UsuariosId();
uid.setClave("54");
TipoUsuario tu = (TipoUsuario) tipousuariodao.getTipoUsuarioByClave("3");
u.setId(uid);
u.setClavetipousuario(tu);
Serializable b1 = usuariosdao.add(u);
u.setRoles(roles);
usuariosdao.update(u);
}
你的桌子看起来不对劲。或者您还没有在这里发布所有的创建表脚本。没有这样的TIPO_USUARIO
表格。另外,USUARIO
表中没有任何名为CLAVE_TIPO_USUARIO
的字段。
问题内容: 当我不想相互连接两个表时,我得到以下消息:#1452-无法添加或更新子行:外键约束失败....我想从facebook_users表格中连接oauth_uid2(主键)外键为oauth_uid2的错误列表。但是我总是得到这个信息。我已经清除了数据,但没有任何效果。在表users_facebook中,我还有1条记录。 1452-无法添加或更新子行:外键约束失败(。,在更新级联上删除级联时使
我知道在这个问题上有很多问题,但我一直未能解决。我正在做一个图形界面来添加/删除员工和管理缺勤。 我一直在阅读和测试那些建议stackOverflow1,但我不能更改数据库,因为它已经由我们的教授给出了。 来自外键的值已经在表“service”中,我在代码中称之为“department”。 我有以下数据库(对于我得到问题的表): 在应用程序中,您可以看到这里和下面的图片,我必须修改员工数据,并将其
当我不想将两个表相互连接时,我收到消息:#1452 - 无法添加或更新子行:外键约束失败....我想使用外键oauth_uid2将oauth_uid2(主键)从facebook_users选项卡连接到错误选项卡。但我总是收到这个信息。我已经清除了我的数据,但没有任何效果。同样在表中users_facebook我有 1 条记录。 1452-无法添加或更新子行:外键约束失败(., CONSTRAINT
如果我插入: 我用visual studio代码和mysql控制台的源代码编写代码 第一表: 第二表: 第三表: 我收到消息: 错误1452(23000):无法添加或更新子行:外键约束失败(。,约束外键()在更新级联的删除级联上引用() 请帮帮我:(,,thx:)
错误代码:1452。无法添加或更新子行:外键约束失败(.,约束外键()引用()) 我看过其他关于这个话题的帖子,但没有运气。我是不是在监督什么或者知道该怎么做?
我有两张桌子,“预订”和“isBooked”。我想在isBooked表中添加值。但我不断收到错误“无法添加或更新子外键约束失败”。 有人能告诉我为什么在尝试将值插入“isBooked”时会出现此错误吗?