一对一单向(外键映射):
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:
@Entity public class Card implements Serializable{ @Id @GeneratedValue public int getId() { return id; } @ManyToOne @JoinColumn(name="pid",unique=true) public Person getPerson() { return person; } } @Entity public 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:
@Entity public class Card implements Serializable{ @Id @GeneratedValue public int getId() { return id; } @ManyToOne @JoinColumn(name="pid",unique=true) public Person getPerson() { return person; } } @Entity public 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; } } @Entity public class Person implements Serializable { @Id @GeneratedValue public int getId() { return id; } }
时间: 2024-11-06 02:08:58