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; |
五、映射方法 |
<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(); } }
相关文章推荐
- Android Fragment——跟Activity通信
- 我的第一篇博客
- ExecutorService多线程扫描全盘路径
- 单例模式( Singleton)
- Tcp packet Receive and reOrder
- 【转载】 聊聊 iOS 开发
- php导入导出excel实例
- C# 中的委托和事件
- G语言图形内核库
- intellij idea 打包war包
- 关于常见的变量修饰符: const, static, extern, register, auto 的详细解释,使用场合以及注意事项
- Spring源码解析——如何阅读源码
- C++ 如何初始化静态类成员
- 抓包工具charles的使用
- redis的简单使用
- (Android特效)-Android-StickyNavLayout
- Cocos2D-X设计模式:管理者模式
- ios 基于AFN的图片上传
- 挑出字符串中的大写字母
- 2015年中国的云计算标准有哪些?