Hibernate关联之 多对一连接表单向关联
来源:互联网 发布:tf口红 知乎 编辑:程序博客网 时间:2024/05/15 11:32
Hibernate 多对一连接表单向关联
一、模型介绍
多个人(Person)对应一个地址(Address)。
二、实体(省略getter、setter方法)
public class Personn1tab {
private int personid;
private String name;
private int age;
private Addressn1tab addressn1tab;
public class Addressn1tab {
private int addressid;
private String addressdetail;
三、表模型
mysql> desc address_n1tab;
+---------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+----------------+
| addressid | int(11) | NO | PRI | NULL | auto_increment |
| addressdetail | varchar(255) | YES | | NULL | |
+---------------+--------------+------+-----+---------+----------------+
mysql> desc join_n1tab;
+------------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------+------+-----+---------+-------+
| personid | int(11) | NO | PRI | | |
| addressn1tab | int(11) | YES | MUL | NULL | |
+------------+---------+------+-----+---------+-------+
mysql> desc person_n1tab;
+----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+----------------+
| personid | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
+----------+--------------+------+-----+---------+----------------+
四、生成的SQL脚本
CREATE TABLE `address_n1tab` (
`addressid` int(11) NOT NULL auto_increment,
`addressdetail` varchar(255) default NULL,
PRIMARY KEY (`addressid`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=gbk;
CREATE TABLE `join_n1tab` (
`personid` int(11) NOT NULL,
`address11fk` int(11) default NULL,
PRIMARY KEY (`personid`),
KEY `FKAC780AAADAE3A82C` (`personid`),
KEY `FKAC780AAAC6242A64` (`address11fk`),
CONSTRAINT `FKAC780AAAC6242A64` FOREIGN KEY (`address11fk`) REFERENCES `address_n1tab` (`addressid`),
CONSTRAINT `FKAC780AAADAE3A82C` FOREIGN KEY (`personid`) REFERENCES `person_n1tab` (`personid`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;
CREATE TABLE `person_n1tab` (
`personid` int(11) NOT NULL auto_increment,
`name` varchar(255) default NULL,
`age` int(11) default NULL,
PRIMARY KEY (`personid`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=gbk;
五、映射方法
ManyToOneTabPerson.hbm.xml
<hibernate-mapping> <class name="com.bean.Personn1tab" table="PERSON_1ntab"> <id name="personid"> <generator class="identity"/> </id> <property name="name"/> <property name="age"/> <!--使用join元素显式确定链接表--> <join table="join_n1tab"> <!--映射关联所用的外键--> <key column="personid"/> <many-to-one name="addressn1tab"/> </join> </class> </hibernate-mapping>
ManyToOneTabAddress.hbm.xml
<hibernate-mapping> <class name="com.bean.Addressn1tab" table="ADDRESS_n1tab"> <id name="addressid"> <generator class="identity"/> </id> <property name="addressdetail"/> </class> </hibernate-mapping>
public class Test_n1tab {public static void main(String[] args){ Personn1tab p1=new Personn1tab(); Personn1tab p2=new Personn1tab(); p1.setName("p1"); p1.setAge(21); p2.setName("p2"); p2.setAge(23); Addressn1tab add=new Addressn1tab(); add.setAddressdetail("大连市"); p1.setAddressn1tab(add); p2.setAddressn1tab(add); Session session=HibernateUtil.getCurrentSession(); Transaction tx=session.beginTransaction(); session.save(add); session.save(p1); session.save(p2); tx.commit(); HibernateUtil.closeSession(); } }
- Hibernate关联之 多对一连接表单向关联
- Hibernate 多对一连接表单向关联
- Hibernate 多对一连接表单向关联
- Hibernate 多对一连接表单向关联
- Hibernate 多对一连接表单向关联
- Hibernate关联之一对多连接表单向关联
- Hibernate关联之 一对一连接表单向关联
- Hibernate 一对多连接表单向关联
- Hibernate 一对多连接表单向关联
- Hibernate 一对多连接表单向关联
- Hibernate 一对多连接表单向关联
- Hibernate 一对一连接表单向关联
- Hibernate 一对一连接表单向关联
- Hibernate 一对一连接表单向关联
- Hibernate 一对一连接表单向关联
- Hibernate关联映射之-单向多对一关联(无连接表)
- Hibernate关联映射之-单向多对一关联(连接表)
- Hibernate 关联映射 之 多对多 关联(一)
- 第十集 特征选择
- linux下关闭防火墙,停止防火墙
- 2015-IT旅途~TIME见证下的成长轨迹
- 最基础的安装包
- tips: 正则表达式 筛选String字符串中的数字
- Hibernate关联之 多对一连接表单向关联
- 使用profiler检测数据库并修改索引
- 详解【单例模式】
- 3.6 判断两个无环链表是否相交 & 找出相交的第一个结点
- servlet详解
- LeetCode-Distinct Subsequences
- Bootstarp3与ie浏览器的兼容问题解决方案——05/11/17补充说明
- iOS js与objective-c的交互(转)
- ionic+AngularJs项目中实现三级联动效果,筛选省份、城市、区县