您的位置:首页 > 其它

Hibernate关联之多对一外键单向关联

2015-08-28 15:01 295 查看
Hibernate 多对一外键单向关联
一、模型介绍
多个人(Person)对应一个地址(Address)。
二、实体(省略getter、setter方法)
public class Personn1fk {
private int personid;
private String name;
private int age;
private Addressn1fk addressn1fk;
public class Addressn1fk {
private int addressid;
private String addressdetail;
三、表模型
mysql> desc address_n1kf;
+---------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+----------------+
| addressid | int(11) | NO | PRI | NULL | auto_increment |
| addressdetail | varchar(255) | YES | | NULL | |
+---------------+--------------+------+-----+---------+----------------+
mysql> desc person_n1kf;
+-----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+----------------+
| personid | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
| addressId | int(11) | YES | MUL | NULL | |
+-----------+--------------+------+-----+---------+----------------+
四、生成的SQL脚本
CREATE TABLE `address_n1kf` (
`addressid` int(11) NOT NULL auto_increment,
`addressdetail` varchar(255) default NULL,
PRIMARY KEY (`addressid`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;
DROP TABLE IF EXISTS `person_n1kf`;
CREATE TABLE `person_n1kf` (
`personid` int(11) NOT NULL auto_increment,
`name` varchar(255) default NULL,
`age` int(11) default NULL,
`addressId` int(11) default NULL,
PRIMARY KEY (`personid`),
KEY `FK4571AF54A2A3EE48` (`addressId`),
CONSTRAINT `FK4571AF54A2A3EE48` FOREIGN KEY (`addressId`) REFERENCES `address_n1kf` (`addressid`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;
五、映射方法
ManyToOneFKPerson.hbm.xml

<hibernate-mapping>

<class name="com.bean.Personn1fk" table="PERSON_n1fk">

<id name="personid">

<generator class="identity"/>

</id>

<property name="name"/>

<property name="age"/>

<!--用来映射关联PO column是Address在该表中的外键列名-->
<many-to-one name="addressn1fk" column="addressId"/>

</class>

</hibernate-mapping>


ManyToOneFKAddress.hbm.xml

<hibernate-mapping>

<class name="com.bean.Addressn1fk" table="ADDRESS_n1fk">

<id name="addressid">

<generator class="identity"/>

</id>

<property name="addressdetail"/>

</class>

</hibernate-mapping>


[align=left]六、测试方法[/align]
[align=left] [/align]
public class Test_n1fk {

public static void main(String[] args){

Personn1fk p1=new Personn1fk();
Personn1fk p2=new Personn1fk();

p1.setName("cc");
p1.setAge(30);

p2.setName("yy");
p2.setAge(30);

Addressn1fk add=new Addressn1fk();

add.setAddressdetail("大连市");

p1.setAddressn1fk(add);
p2.setAddressn1fk(add);

Session session=HibernateUtil.getCurrentSession();
Transaction tx=session.beginTransaction();
session.save(add);
session.save(p1);
session.save(p2);
tx.commit();
HibernateUtil.closeSession();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: