我有两个对象。让它成为公司和员工。如何用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