一对一主键单向关联
SQL:car_pk_single表的主键为engine_pk_single表主键的外键
create table car_pk_single (
id number(10,0) not null,
name varchar2(15),
serial varchar2(30),
manufacturer varchar2(50),
producedate date,
primary key (id)
);
create table engine_pk_single (
id number(10,0) not null,
model varchar2(20),
manufacturer varchar2(50),
producedate date,
primary key (id)
);
alter table car_pk_single
add constraint fk_car_engine_pk_single
foreign key (id)
references engine_pk_single(id);
POJO:Engine类和Car类都有对方的一个引用(以下为省略写法)
public class Car implements Serializable
{
private Engine engine;
}
public class Engine implements Serializable
{
//这里没有属性Car
... ...
}
XML: Car.hbm.xml Engine.hbm.xml(以下为省略写法)
<hibernate-mapping package="com.allanlxf.hibernate.association.o2o.entity">
<class name="Car" table="car_pk_single" >
<id name="id" column="id" type="integer">
<generator />
</class>
</hibernate-mapping>
<hibernate-mapping package="com.allanlxf.hibernate.association.o2o.entity">
<class name="Engine" table="engine_pk_single" >
<id name="id" column="id" type="integer">
<generator ,再执行session.delete(car),则能级联删除engine
one-to-one主键单向关联映射总结: 需对有外键一方的xml文件设置constrained="true"。
若操作涉及到映射关系双方的数据,以操作有外键一方的对象为主(在有级联的情况下);
若操作只涉及到有外键的一方,则只操作这一方对象即可。