您的位置:首页 > 其它

传智播客Hibernate视频教程学习笔记18

2009-08-03 16:19 603 查看
一对一关系映射

Person.java

package domain;

public class Person {
private int id;
private String name;
private IdCard idCard;

public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public IdCard getIdCard() {
return idCard;
}
public void setIdCard(IdCard idCard) {
this.idCard = idCard;
}
}


IdCard.java

package domain;

import java.util.Date;

public class IdCard {
private int id;
private Date usefulLife;
private Person person;

public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Date getUsefulLife() {
return usefulLife;
}
public void setUsefulLife(Date usefulLife) {
this.usefulLife = usefulLife;
}
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
}


Person.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="domain">
<class name="Person">
<id name="id">
<generator class="native"/>
</id>
<property name="name"></property>
<one-to-one name="idCard"></one-to-one>
</class>
</hibernate-mapping>


IdCard.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="domain">
<class name="IdCard" table="id_card">
<id name="id">
<generator class="foreign">
<param name="property">person</param>
</generator>
</id>
<property name="usefulLife" column="userful_life"></property>
<one-to-one name="person" constrained="true"></one-to-one>
</class>
</hibernate-mapping>


test.java

import java.util.Date;

import domain.IdCard;
import domain.Person;
import hibernate.HibernateUtil;

public class test {

/**
* @param args
*/
public static void main(String[] args) {
IdCard idCard = new IdCard();
idCard.setUsefulLife(new Date());

Person p = new Person();
p.setName("pf");

p.setIdCard(idCard);
idCard.setPerson(p);

HibernateUtil.add(p);
HibernateUtil.add(idCard);

}
}


发现一对一关系中

p.setIdCard(idCard);
idCard.setPerson(p);

相互都设置了关联,但是去掉第一行代码,程序仍能正常运行,而相反删去第二行代码,程序报错。

是存在主从表关系,可以仅保存主对象,但是不可以只保存从对象不保存主对象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: