一对一单向(外键映射):
Bean:
public class Card implements Serializable{ ???private int id ; ???????private int num ; ???????private Person person ; ???????....}public class Person implements Serializable { ???????private int id ; ???????private String name ; ???????....}
Xml:
Card.hbm.xml:<class name = "Card"> ???????<!-- id是来配置主键 ?????????????name是类中的哪个属性和主键映射 ????????????generator:表示主键的生成策略 ???????--> ???????<id name = "id"> ???????????<generator class="native" /> ???????</id> ???????<!-- property是用来把类中的属性和表的字段做一一对应 --> ???????<property name="num" /> ???????????????<!-- many-to-one 唯一的创建新的字段的标签 ????????????name是Car中一的一方的属性 ????????????column 表示name对应到表中的外键是什么名字 ???????--> ???????????????<many-to-one name="person" column="pid" unique="true" cascade="all"/> ???????????</class>Person.hbm.xml:<class name = "Person"> ???????<!-- id是来配置主键 ?????????????name是类中的哪个属性和主键映射 ????????????generator:表示主键的生成策略 ???????--> ???????<id name = "id"> ???????????<generator class="native" /> ???????</id> ???????<property name="name" /> ???</class>
annotation:
@Entitypublic class Card implements Serializable{ ???????@Id @GeneratedValue ???public int getId() { ???????return id; ???} ???????@ManyToOne ???@JoinColumn(name="pid",unique=true) ???public Person getPerson() { ???????return person; ???}}@Entitypublic class Person implements Serializable { ???????@Id @GeneratedValue ???public int getId() { ???????return id; ???}}
一对一双向(外键映射):
Xml:
Card.hbm.xml:<class name = "Card"> ???????<!-- id是来配置主键 ?????????????name是类中的哪个属性和主键映射 ????????????generator:表示主键的生成策略 ???????--> ???????<id name = "id"> ???????????<generator class="native" /> ???????</id> ???????<!-- property是用来把类中的属性和表的字段做一一对应 --> ???????<property name="num" /> ???????????????<!-- many-to-one 唯一的创建新的字段的标签 ????????????name是Car中一的一方的属性 ????????????column 表示name对应到表中的外键是什么名字 ???????--> ???????????????<many-to-one name="person" column="pid" unique="true" cascade="all" /> ???????????</class>Person.hbm.xml:<class name = "Person"> ???????<!-- id是来配置主键 ?????????????name是类中的哪个属性和主键映射 ????????????generator:表示主键的生成策略 ???????--> ???????<id name = "id"> ???????????<generator class="native" /> ???????</id> ???????<property name="name" /> ???????????????<one-to-one name="card" property-ref="person"/> ???</class>
annotation:
@Entitypublic class Card implements Serializable{ ???????@Id @GeneratedValue ???public int getId() { ???????return id; ???} ???????@ManyToOne ???@JoinColumn(name="pid",unique=true) ???public Person getPerson() { ???????return person; ???}}@Entitypublic class Person implements Serializable { ???????@Id @GeneratedValue ???public int getId() { ???????return id; ???} ???????????????@OneToOne(mappedBy="person") ???public Card getCard() { ???????return card; ???}}
一对一单向(主键映射):
xml:
Card.hbm.xml:<class name = "Card"> ???????<!-- id是来配置主键 ?????????????name是类中的哪个属性和主键映射 ????????????generator:表示主键的生成策略 ???????--> ???????<id name = "id"> ???????????<generator class="foreign"> ???????????????<param name="property">person</param> ???????????</generator> ???????</id> ???????<!-- property是用来把类中的属性和表的字段做一一对应 --> ???????<property name="num" /> ???????????????<!-- many-to-one 唯一的创建新的字段的标签 ????????????name是Car中一的一方的属性 ????????????column 表示name对应到表中的外键是什么名字 ???????--> ???????????????<one-to-one name="person" constrained="true" /> ???????????</class>Person.hbm.xml:<class name = "Person"> ???????<!-- id是来配置主键 ?????????????name是类中的哪个属性和主键映射 ????????????generator:表示主键的生成策略 ???????--> ???????<id name = "id"> ???????????<generator class="native" /> ???????</id> ???????<property name="name" /> ???</class>
annotation:
public class Card implements Serializable{ ???????//主键来自Person的主键 ???????@OneToOne ???@PrimaryKeyJoinColumn ???public Person getPerson() { ???????return person; ???}}@Entitypublic class Person implements Serializable { ???????@Id @GeneratedValue ???public int getId() { ???????return id; ???}}
Hibernate映射关系配置(三)
原文地址:http://www.cnblogs.com/hyl-home/p/7576934.html