Hibernate多对一外键关联(单向)
来源:互联网 发布:时间安排软件 编辑:程序博客网 时间:2024/05/15 23:53
1.对应关系模型(多个人对应一个地址)
2.pojo类
public class Person {private Long id;private String name;private Address address;//省略get和set}
public class Address {private int id;private String detail;//省略get和set}3.对应的表结构
mysql> desc person;+-----------+------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+-----------+------------+------+-----+---------+----------------+| personId | bigint(20) | NO | PRI | NULL | auto_increment || addressId | int(11) | NO | MUL | NULL | |+-----------+------------+------+-----+---------+----------------+
mysql> desc address;+-----------+--------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+-----------+--------------+------+-----+---------+----------------+| addressId | int(11) | NO | PRI | NULL | auto_increment || detail | varchar(255) | YES | | NULL | |+-----------+--------------+------+-----+---------+----------------+4.生成表结构的schema
| person | CREATE TABLE `person` ( `personId` bigint(20) NOT NULL AUTO_INCREMENT, `addressId` int(11) NOT NULL, PRIMARY KEY (`personId`), KEY `FK_qdjkgeoknbp0k9s5r6rds2mj2` (`addressId`), CONSTRAINT `FK_qdjkgeoknbp0k9s5r6rds2mj2` FOREIGN KEY (`addressId`) REFERENCES `address` (`addressId`)) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1 |
| address | CREATE TABLE `address` ( `addressId` int(11) NOT NULL AUTO_INCREMENT, `detail` varchar(255) DEFAULT NULL, PRIMARY KEY (`addressId`)) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1 |5.配置文件:
单项一对一关联,一个people对应一个address,将address属性加入people
<many-to-one name="address" column="addressId" not-null="true"/>这里用的是many-to-one,多对一,addressId为address的外键。
package org.hibernate.tutorial;import org.hibernate.Session;import org.hibernate.Transaction;import org.hibernate.tutorial.domain.Address;import org.hibernate.tutorial.domain.Person;import org.hibernate.tutorial.util.HibernateUtil;public class uni_many2one_test {public static void main(String[] args) {Session session = HibernateUtil.getSession();Transaction tx = session.getTransaction();tx.begin();Address address = new Address();address.setDetail("hz");Person p1 = new Person();p1.setName("p1");Person p2 = new Person();p2.setName("p2");p1.setAddress(address);p2.setAddress(address);session.save(address);session.save(p1);session.save(p2);session.getTransaction().commit();}}address应在person之前保存,否则报异常(瞬态实例必须先保存):
org.hibernate.TransientPropertyValueException: Not-null property references a transient value - transient instance must be saved before current operation
0 0
- Hibernate 多对一外键单向关联
- Hibernate 多对一外键单向关联
- Hibernate 多对一外键单向关联
- Hibernate多对一外键关联(单向)
- Hibernate 多对一外键单向关联
- Hibernate 多对一外键单向关联
- Hibernate关联之多对一外键单向关联
- Hibernate 多对多单向关联
- Hibernate 多对多单向关联
- Hibernate 多对多单向关联
- hibernate多对多单向关联_Annotation
- hibernate多对多单向关联_XML
- hibernate多对多的单向关联
- hibernate多对多单向关联
- Hibernate 多对多单向关联
- Hibernate annotation 多对多单向关联
- Hibernate多对一单向关联映射
- hibernate单向多对一关联
- 为什么世界要那么复杂呢???1-5最大间隙问题
- jquery对表单的处理
- 腾讯实习生笔试题
- 三种数据模型
- SQLserver创建数据库
- Hibernate多对一外键关联(单向)
- 并查集--小鑫的城堡
- 强制类型转换的运算优先级比较高。
- lock 语句(C# 参考)
- Unknown column 'filevalue' in 'field list'
- 森纵培训第二十七天课程总结
- 基于AOP的日志调试
- 互联网电视市场趋于细分,TCL爱奇艺“通吃”野心显现
- Pow(x, n)