我有兩個對象。讓它成爲公司和員工。如何用Hibernate刪除相互關聯的對象
CREATE TABLE company (
company_id BIGINT(20) NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
chief_id BIGINT(20) NOT NULL,
PRIMARY KEY (company_id),
CONSTRAINT fk_company_chief
FOREIGN KEY (chief_id)
REFERENCES employee (employee_id)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
CREATE TABLE employee(
employee_id BIGINT(20) NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
company_id BIGINT(20) NOT NULL,
PRIMARY KEY (employee_id),
CONSTRAINT fk_employee_company
FOREIGN KEY (chief_id)
REFERENCES employee (company_id)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
而且我的課是這樣的:
class Employee {
long id;
String name;
Company company;
}
class Company{
long id;
String name;
Employee chief;
}
然後我想刪除公司所有員工。我在一次交易中完成。我越來越像"java.sql.BatchUpdateException: Column 'chief_id' cannot be null"
我能夠刪除後,使其中一列可以爲空。例如「chief_id BIGINT(20)NULL」,然後在刪除前使company.chief = null。
在項目中,我們不使用Hibernate級聯,我無法更改數據庫級聯。
我們使用的是MySql 5.0。
我需要smth像:禁用約束 - >刪除實體 - >啓用約束。禁用狀態只能在當前事務中訪問。我認爲這是默認行爲。
你沒有在這裏指定JPA註釋,我希望它的1 .. *(公司 - 員工)關係是什麼,你可以添加nullable = true在POJO中通過ID定義的註釋,是否有意義? – Narayan 2011-05-10 16:05:02