繁体   English   中英

Hibernate:无法添加或更新子行:外键约束失败

[英]Hibernate :Cannot add or update a child row: a foreign key constraint fails

我有这个问题:

不能添加或更新子行,外键约束失败( bytecodetecompany_links ,约束FK_company_links_1外键( id )参考companyidUser )ON DELETE CASCADE ON UPDATE CASCADE)

但我真的不明白这种情况会发生,所以我会在这里发布我的表格:

//USER TABLE
DROP TABLE IF EXISTS `bytecodete`.`user`;
CREATE TABLE  `bytecodete`.`user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `email` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  `type` tinyint(1) unsigned NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `email` (`email`)
)

//COMPANY TABLE
 DROP TABLE IF EXISTS `bytecodete`.`company`;
CREATE TABLE  `bytecodete`.`company` (
  `idUser` int(11) NOT NULL,
  `fantasyName` varchar(55) NOT NULL,
  `corporateName` varchar(55) NOT NULL,
  `cnpj` varchar(14) NOT NULL,
  PRIMARY KEY (`idUser`),
  UNIQUE KEY `cnpj` (`cnpj`),
  CONSTRAINT `company_ibfk_1` FOREIGN KEY (`idUser`) REFERENCES `user` (`id`) 
  ON DELETE CASCADE ON UPDATE CASCADE
)

// COMPANY_LINKS TABLE
  DROP TABLE IF EXISTS `bytecodete`.`company_links`;
  CREATE TABLE  `bytecodete`.`company_links` (
  `id` int(11) NOT NULL DEFAULT '0',
  `idCompany` int(10) unsigned NOT NULL,
   `serviceName` varchar(45) NOT NULL,
   `link` varchar(45) NOT NULL,
   PRIMARY KEY (`id`) USING BTREE,
   CONSTRAINT `FK_company_links_1` FOREIGN KEY (`id`) REFERENCES `company` (`idUser`) 
   ON DELETE CASCADE ON UPDATE CASCADE
   ) 

我知道当我尝试在有外键的表中插入某些内容并且我没有为此键设置某些值时,此异常会给出。 但这不是我的情况,这是我的输出:

11:47:30,809  INFO SessionFactoryObjectFactory:82 - Not binding factory to JNDI, no JNDI name configured
Hibernate: 
    insert 
    into
        bytecodete.user
        (email, password, type) 
    values
        (?, ?, ?)
11:47:30,948 TRACE StringType:133 - binding 'valter.bcc@gmail.com' to parameter: 1
11:47:30,949 TRACE StringType:133 - binding 'U25YM/DOl5k=' to parameter: 2
11:47:30,950 TRACE IntegerType:133 - binding '2' to parameter: 3
Hibernate: 
    insert 
    into
        bytecodete.company
        (cnpj, corporateName, fantasyName, idUser) 
    values
        (?, ?, ?, ?)
11:47:31,214 TRACE StringType:133 - binding '98806728000100' to parameter: 1
11:47:31,215 TRACE StringType:133 - binding 'Semana da Computação e Tecnologia' to parameter: 2
11:47:31,215 TRACE StringType:133 - binding 'SECOT' to parameter: 3
11:47:31,216 TRACE IntegerType:133 - binding '37' to parameter: 4
idCompany=37
Hibernate: 
    select
        company_.idUser,
        company_.cnpj as cnpj9_,
        company_.corporateName as corporat3_9_,
        company_.fantasyName as fantasyN4_9_ 
    from
        bytecodete.company company_ 
    where
        company_.idUser=?
11:47:31,300 TRACE IntegerType:133 - binding '37' to parameter: 1
11:47:31,316 TRACE StringType:172 - returning '98806728000100' as column: cnpj9_
11:47:31,316 TRACE StringType:172 - returning 'Semana da Computação e Tecnologia' as column: corporat3_9_
11:47:31,351 TRACE StringType:172 - returning 'SECOT' as column: fantasyN4_9_
Hibernate: 
    insert 
    into
        bytecodete.company_links
        (idCompany, link, serviceName, id) 
    values
        (?, ?, ?, ?)
11:47:31,353 TRACE IntegerType:133 - binding '37' to parameter: 1
11:47:31,354 TRACE StringType:133 - binding 'http://www.flickr.com/services/api/' to parameter: 2
11:47:31,354 TRACE StringType:133 - binding 'Flickr' to parameter: 3
11:47:31,355 TRACE IntegerType:133 - binding '0' to parameter: 4
11:47:31,433  WARN JDBCExceptionReporter:77 - SQL Error: 1452, SQLState: 23000
11:47:31,452 ERROR JDBCExceptionReporter:78 - Cannot add or update a child row: a foreign key constraint fails (`bytecodete`.`company_links`, CONSTRAINT `FK_company_links_1` FOREIGN KEY (`id`) REFERENCES `company` (`idUser`) ON DELETE CASCADE ON UPDATE CASCADE)

对不起打扰你的人,但我真的需要帮助,我不知道发生了什么。

此致,Valter Henrique。

我们可能需要看一些代码来帮助你,但只是基于INSERT语句,看起来你的company_linkscompany外键可能是错误的。 您对company_links INSERT对于idCompany有一个37,对于id有一个0。 您的外键是在id而不是idCompany上设置的,因此37应该设置为id ,或者外部应该更改为idCompany

看起来你的参数顺序混乱了。 您的插入语句是:

 insert into bytecodete.company_links (idCompany, link, serviceName, id) values (?, ?, ?, ?) 

并且您将37绑定到参数1(idCompany),将0绑定到参数4(id)。 id必须是37,而不是0。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM