私の現在の更新関数の保存部分 (flush: true と insert:true を試しました) では、試行するたびに挿入が実行されます。
更新したい列は主キーですが、mysql-database では、すべての外部キーの使用で ON UPDATE CASCADE を使用しています。
grails やその他の場所で注意しなければならないことはありますか?
更新:次のテーブルがあります。
CREATE TABLE IF NOT EXISTS `Station` (
`Name` CHAR(50) NOT NULL ,
`Location_Designation` CHAR(50) NOT NULL ,
PRIMARY KEY (`Name`, `Location_Designation`) ,
INDEX `fk_Station_Location1_idx` (`Location_Designation` ASC) ,
CONSTRAINT `fk_Station_Location_LocatedIn`
FOREIGN KEY (`Location_Designation` )
REFERENCES `Location` (`Designation` )
ON DELETE NO ACTION
ON UPDATE CASCADE)
ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS `Location` (
`Designation` CHAR(50) NOT NULL ,
PRIMARY KEY (`Designation`) )
ENGINE = InnoDB;
私の聖杯:
stationInstance.properties = params
//Station = "S1", Location="test"
if (!stationInstance.save(flush: true)) { // }
更新 2: これは、私の休止状態が update-command で行うことです:
Hibernate: select station_.name, station_.Location_Designation as Location2_2_ from station station_ where station_.name=?
Hibernate: insert into station (Location_Designation, name) values (?, ?)