constrained="true" 和 这2个设置有什么区别啊, 不是已经表明他是共享主键吗,constrained="true" 也表明存在主键约束,那这2个区别是什么啊
5条回答
- fdsafds 2009-07-11 23:28关注
例如user与room表格,可以如下建立:
[code="sql"]CREATE TABLE user (
id INT(11) NOT NULL auto_increment PRIMARY KEY,
name VARCHAR(100) NOT NULL default ''
);CREATE TABLE room (
id INT(11) NOT NULL auto_increment PRIMARY KEY,
address VARCHAR(100) NOT NULL default ''
);[/code]User类别与Room类别的设计使用 一对一(唯一外键关联) 中的设计即可,接着在User.hbm.xml方面如下设计:
User.hbm.xml
[code="xml"]<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> [/code]在Room.hbm.xml的设计方面如下:
Room.hbm.xml
[code="xml"]<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> user [/code][color=red]在Room的id主键上,使用foreign表示与外键共享主键,也就是与User实体共享主键,而constrained设定为true,表示约束room的主键必须与user中对应资料的主键相同。[/color]一个储存的实例如下:
[code="java"]User user1 = new User();
user1.setName("bush");
Room room1 = new Room();
room1.setAddress("NTU-M8-419");// 互相设定关联
user1.setRoom(room1);
room1.setUser(user1);User user2 = new User();
user2.setName("caterpillar");
Room room2 = new Room();
room2.setAddress("NTU-M8-418");// 互相设定关联
user2.setRoom(room2);
room2.setUser(user2);Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();session.save(user1);
session.save(user2);tx.commit();
session.close();[/code]本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 flink cdc无法实时同步mysql数据
- ¥100 有人会搭建GPT-J-6B框架吗?有偿
- ¥15 求差集那个函数有问题,有无佬可以解决
- ¥15 【提问】基于Invest的水源涵养
- ¥20 微信网友居然可以通过vx号找到我绑的手机号
- ¥15 寻一个支付宝扫码远程授权登录的软件助手app
- ¥15 解riccati方程组
- ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
- ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
- ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决