예를 들어 id = 1 인 EMPLOYEE를 업데이트 할 때이 employee_id의 CERTIFICATE 테이블에있는 이전 레코드를 모두 삭제하고 새 레코드를 삽입하는 가장 좋은 방법은 무엇입니까? 예를 들어, employee id = 1에는 A, B 인증서가 있습니다. 직원을 업데이트 할 때이 직원에 대한 모든 인증서를 삭제하고 인증서도 A, B 또는 새 C, D로 다시 삽입합니다.이전 레코드를 모두 삭제하고 새 레코드를 삽입하십시오.
create table EMPLOYEE (
id INT NOT NULL auto_increment,
first_name VARCHAR(20) default NULL,
last_name VARCHAR(20) default NULL,
salary INT default NULL,
PRIMARY KEY (id)
);
create table CERTIFICATE (
id INT NOT NULL auto_increment,
certificate_name VARCHAR(30) default NULL,
employee_id INT default NULL,
PRIMARY KEY (id)
);
Hibernate 매핑
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="Employee" table="EMPLOYEE">
<id name="id" type="int" column="id">
<generator class="sequence">
<param name="sequence">employee_seq</param>
</generator>
</id>
<set name="certificates" lazy="false" cascade="all">
<key column="employee_id" not-null="true"/>
<one-to-many class="Certificate"/>
</set>
<property name="firstName" column="first_name"/>
<property name="lastName" column="last_name"/>
<property name="salary" column="salary"/>
</class>
<class name="Certificate" table="CERTIFICATE">
<id name="id" type="int" column="id">
<param name="sequence">certificate_seq</param>
</id>
<property name="employee_id" column="employee_id" insert="false" update="false"/>
<property name="name" column="certificate_name"/>
</class>
</hibernate-mapping>
직원에게 업데이트를 보낼 때 인증서에서 행을 삭제하는 트리거를 만듭니다. –