Hi Srilatha,
As of now I was doing this:
Code:
hql= "delete from MachineDetails where NicIp = ?";
query = Sess.createQuery(hql);
query.setParameter(0, NicIp);
del = query.executeUpdate();
But when I do that i am getting an error from the database:
Code:
13:41:07,576 WARN [JDBCExceptionReporter] SQL Error: 1451, SQLState: 23000
13:41:07,576 ERROR [JDBCExceptionReporter] Cannot delete or update a parent row:
a foreign key constraint fails (`appinventory`.`processdetails`, CONSTRAINT `FK
1C0FECF36FA5594A` FOREIGN KEY (`NicIp`) REFERENCES `machinedetails` (`NicIp`))
13:41:07,607 INFO [STDOUT] org.hibernate.exception.ConstraintViolationException
: could not execute update query;
Regarding this too I wanted to clarify:
All the foreign keys that are being set from Hibernate are being set properly, this is clarified by the mysql dump, but the fact that we have used cascade = all, is not reflecting on the database end. I mean to say it does not say "on delete cascade on update cascade".
Code:
DROP TABLE IF EXISTS `harddiscdetails`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `harddiscdetails` (
`HardDiscID` bigint(20) NOT NULL DEFAULT '0',
`HardDiscNumber` varchar(100) DEFAULT NULL,
`HardDiscName` varchar(100) DEFAULT NULL,
`HardDiscSize` varchar(100) DEFAULT NULL,
`NicIp` varchar(100) DEFAULT NULL,
PRIMARY KEY (`HardDiscID`),
KEY `FK583F68E26FA5594A` (`NicIp`),
CONSTRAINT `FK583F68E26FA5594A` FOREIGN KEY (`NicIp`) REFERENCES `machinedetails` (`NicIp`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `harddiscdetails`
--
LOCK TABLES `harddiscdetails` WRITE;
/*!40000 ALTER TABLE `harddiscdetails` DISABLE KEYS */;
INSERT INTO `harddiscdetails` VALUES (1,'HD[0]','ST340014A','37','172.16.1.186');
/*!40000 ALTER TABLE `harddiscdetails` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `machinedetails`
--
DROP TABLE IF EXISTS `machinedetails`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `machinedetails` (
`AppId` varchar(100) DEFAULT NULL,
`Vendor` varchar(100) DEFAULT NULL,
`Model` varchar(100) DEFAULT NULL,
`Version` varchar(100) DEFAULT NULL,
`SN` varchar(100) DEFAULT NULL,
`Domain` varchar(100) DEFAULT NULL,
`User` varchar(100) DEFAULT NULL,
`OS` varchar(100) DEFAULT NULL,
`HostName` varchar(100) DEFAULT NULL,
`OS_Date` varchar(100) DEFAULT NULL,
`RAM` varchar(100) DEFAULT NULL,
`VGA` varchar(100) DEFAULT NULL,
`Monitor` varchar(100) DEFAULT NULL,
`HDCount` varchar(100) DEFAULT NULL,
`CDRomCount` varchar(100) DEFAULT NULL,
`SCCount` varchar(100) DEFAULT NULL,
`NICCount` varchar(100) DEFAULT NULL,
`SCSICount` varchar(100) DEFAULT NULL,
`ServicesCount` varchar(100) DEFAULT NULL,
`ProcessCount` varchar(100) DEFAULT NULL,
`SofwareCount` varchar(100) DEFAULT NULL,
`PeripharalCount` varchar(100) DEFAULT NULL,
`NicIp` varchar(100) NOT NULL,
PRIMARY KEY (`NicIp`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `machinedetails`
--
LOCK TABLES `machinedetails` WRITE;
/*!40000 ALTER TABLE `machinedetails` DISABLE KEYS */;
INSERT INTO `machinedetails` VALUES (NULL,'Hewlett-Packard','HP dx2000 MT(PG984AV)','','INI5270CC6','applabs.net','APPLABS\\IN060053','Microsoft Windows XP Professional','DTAPP0423','20020101','512','Intel(R) 82865G Graphics Controller','hp L1530','1','0','1','1','0','105','40','35','2','172.16.1.186');
/*!40000 ALTER TABLE `machinedetails` ENABLE KEYS */;
UNLOCK TABLES;
Assuming that hibernate handles cascades on the front end, I tried doing this :
Code:
macdel = (MachineDetails) Sess.load(MachineDetails.class,NicIp);
Set hardDiscsSet= macdel.getHardDiscs();
macdel.getHardDiscs().remove(hardDiscsSet);
However when i do that i am getting the following error
Code:
14:50:24,219 ERROR [BasicPropertyAccessor] IllegalArgumentException in class: Ha
rdDiscDetails, setter method of property: NicIp
14:50:24,219 ERROR [BasicPropertyAccessor] expected type: java.lang.String, actu
al value: MachineDetails
14:50:24,219 INFO [STDOUT] org.hibernate.PropertyAccessException: IllegalArgume
ntException occurred while calling setter of HardDiscDetails.NicIp
Please look in to it and let me know how i should approach this. Thanks again.