У меня есть таблица с идентификатором поля в качестве первичного ключа и PID другого поля в качестве внешнего ключа для поля идентификатора. Оба имеют длинные типы данных.
Итак, это моя структура таблицы
CREATE TABLE `myobj` (
`ID` BIGINT(100) NOT NULL AUTO_INCREMENT,
`FRIENDLY_NAME` VARCHAR(100) DEFAULT NULL,
`PARENT_ID` BIGINT(100) DEFAULT NULL,
`PARENT` VARCHAR(100) DEFAULT NULL,
PRIMARY KEY (`ID`),
KEY `PARENT_ID` (`PARENT_ID`),
CONSTRAINT `myobj_ibfk_1` FOREIGN KEY (`PARENT_ID`) REFERENCES `myobj` (`ID`) ON DELETE CASCADE
) ENGINE=INNODB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1
Я использую Hibernate как ORM для вставки в БД MySQL. Проблема в
Когда одна или несколько записей, которые будут верхнего уровня без родительского идентификатора, происходит ошибка с вставкой записей верхнего уровня. Похоже, в случае отсутствия родительского идентификатора
он будет принимать только NULL.
Но с точки зрения кода Java-приложения тип данных является длинным, и, следовательно, когда я вставляю объект через Hibernate со значением по умолчанию, равным 0, это выглядит как нарушение ограничения
Невозможно добавить или обновить дочернюю строку: a
ограничение внешнего ключа не выполнено
(genericdb
. myobj
, ОГРАНИЧЕНИЕ
myobj_ibfk_1
иностранный ключ
(PARENT_ID
) ССЫЛКИ myobj
(ID
) НА УДАЛЕННОМ КАСКАДЕ)
Эта проблема возникает также при установке 0 в качестве значения через CLI CLI.
Второй секнарио:
Также попытался установить значение по умолчанию для PARENT_ID как 0.
CREATE TABLE `myobj` (
`ID` BIGINT(100) NOT NULL AUTO_INCREMENT,
`FRIENDLY_NAME` VARCHAR(100) DEFAULT NULL,
`PARENT_ID` BIGINT(100) DEFAULT '0',
`PARENT` VARCHAR(100) DEFAULT NULL,
PRIMARY KEY (`ID`),
KEY `PARENT_ID` (`PARENT_ID`),
CONSTRAINT `myobj_ibfk_1` FOREIGN KEY (`PARENT_ID`) REFERENCES `myobj` (`ID`) ON DELETE CASCADE
) ENGINE=INNODB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1
ТАК, когда я вставляю 0 в поле Parent_ID, ошибка все равно
Невозможно добавить или обновить дочернюю строку: a
ограничение внешнего ключа не выполнено
(genericdb
. myobj
, ОГРАНИЧЕНИЕ
myobj_ibfk_1
иностранный ключ
(PARENT_ID
) ССЫЛКИ myobj
(ID
) НА УДАЛЕННОМ КАСКАДЕ)
Пожалуйста, дайте мне знать, если что-то здесь не так.