Java 如果记录不再存在于其他数据库中,则删除该记录
我从数据库A获取数据并通过hibernate将其传递给数据库B,我要做的是当表证书的记录在dbA中不再存在时,在更新时在dbB中删除 例如,在dbB中,我有Java 如果记录不再存在于其他数据库中,则删除该记录,java,database,hibernate,Java,Database,Hibernate,我从数据库A获取数据并通过hibernate将其传递给数据库B,我要做的是当表证书的记录在dbA中不再存在时,在更新时在dbB中删除 例如,在dbB中,我有employeeId=1的证书“A”和“B”,当再次更新证书“A”在dbA中被删除,并添加了一个新的“C”,因此在dbB中应仅为证书“B”和“C”,保存更新后 现在,在更新EMPLOYEE和CERTIFICATE表之前,我要做的是删除employeeId=x的所有证书 String hqlDeleteCertificates = "delet
employeeId=1
的证书“A”
和“B”
,当再次更新证书“A”
在dbA中被删除,并添加了一个新的“C”
,因此在dbB中应仅为证书“B”和“C”
,保存更新后
现在,在更新EMPLOYEE和CERTIFICATE表之前,我要做的是删除employeeId=x的所有证书
String hqlDeleteCertificates = "delete Certificates where employeeId= :employeeId";
Query query = session.createQuery(hqlDeleteCertificates );
query.setInteger("employeeId", employeeId);
query.executeUpdate();
在保存更新、更改映射配置时,是否有更好的方法在一个事务中执行此操作
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)
);
休眠映射
<?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>
雇员(续)
证书
查看org.hibernate.classic.Lifecycle
界面及其方法。通过您的POJO之一实现此接口
从文件中:
onSave:在保存对象之前调用onUpdate:在对象更新之前调用,即调用Session.update()时
onDelete:在删除对象之前调用
onLoad:在加载对象后立即调用
在那里,您可以将代码挂接到
onUpdate
中,而不再关心它