一_对_一Hibernate

//Hibernate -- 一对一(共享主键-双向关联)

//用户表
create table Userv(
usId varchar2(50) primary key,
usName varchar2(50) not null,
usSex varchar2(50) not null
);

//省份证表
create table Cardv(
caId varchar2(50) primary key,
caName varchar2(50) not null
);

//用户实体类
public class Userv implements Serializable
{
private String uId;
    private String uName;
    private String uSex;
    private Cardv card;
//省略get(),set()
}

//身份证卡(共享身份证卡的ID)
public class Cardv implements Serializable
{
    private String cId;
    private String cName;
    private Userv user;
//省略get(),set()
}

//用户的映射文件(Userv.hbm.xml)
<hibernate-mapping package="com.rt.xbliuc.pojos">
<class name="Userv" table="Userv">
<id name="uId" column="usId">
<generator class="assigned"/>
</id>
<property name="uName" column="usName"/>
<property name="uSex" column="usSex"/>
<one-to-one name="card" class="com.rt.xbliuc.pojos.Cardv" cascade="all"/>
</class>
</hibernate-mapping>

//身份证卡的映射文件(Cardv.hbm.xml)
<hibernate-mapping package="com.rt.xbliuc.pojos">
<class name="Cardv" table="Cardv">
<id name="cId" column="caId">
<generator class="foreign">
<param name="property">user</param>
</generator>
</id>
<property name="cName" column="caName"/>
<one-to-one name="user" class="com.rt.xbliuc.pojos.Userv" constrained="true"/>
</class>
</hibernate-mapping>

//测试类 Test.java
public class Test{
session = HConnection.getSession();
Transaction transaction = session.beginTransaction();
Userv user = new Userv("001", "lxb", "男");
Cardv card = new Cardv();
card.setcName("2");
card.setUser(user);
user.setCard(card);
session.save(user);
session.flush();
transaction.commit();
}

你可能感兴趣的:(Hibernate)