Hibernate基础之八:一对一单/双向,主/外键关联 @OneToOne@JoinColumn
来源:互联网 发布:ubuntu gcc最新版本 编辑:程序博客网 时间:2024/06/14 23:11
1:一对一,单向,外键关联
Student和stusentIDCard两张表是一对一的关系,即一个学生只有一个学生证,一个学生证只对应一个学生
Stuent表里有个外键要参考StudentIDCard
表现类上就是Student实例里聚合一个stusentIDCard
@Entitypublic class Student {private int id;private String name;private int age;private StudentIDCard cardId;@Id@GeneratedValue//可以定单独的自增序列,这共用一个public int getId() {return id;}@OneToOne//一对一的关系@JoinColumn(name="card_Id")//指定外键名称是card_Idpublic StudentIDCard getCardId() {return cardId;}
@Entitypublic class StudentIDCard {private int id;private String kinds;private Date datePublished;@Id@GeneratedValue//可以定义单独的自增序列,这里共用一个public int getId() {return id;}
测试类
@Testpublic void testIN() {Session session = HibernateUtil.getSessionFactory().getCurrentSession(); session.beginTransaction(); StudentIDCard sic = new StudentIDCard(); sic.setKinds("primarySchool"); sic.setDatePublished(new Date()); session.save(sic); Student s = new Student();s.setName("李四");s.setAge(0);s.setCardId(sic); session.save(s); session.getTransaction().commit(); HibernateUtil.getSessionFactory().close(); }
@Testpublic void testShow() {new SchemaExport(new AnnotationConfiguration().configure()).create(false,true);}
建表结果:
foreign key (card_Id) references StudentIDCard
16:15:13,184 DEBUG SchemaUpdate:226 - create table Student (id number(10,0) not null, age number(10,0) not null, name varchar2(255 char), card_Id number(10,0),primary key (id))
16:15:13,193 DEBUG SchemaUpdate:226 - create table StudentIDCard (id number(10,0) not null, datePublished timestamp, kinds varchar2(255 char), primary key (id))
16:15:13,200 DEBUG SchemaUpdate:226 - alter table Student add constraint FKF3371A1BEA113360foreign key (card_Id)references StudentIDCard
PowerDesigner里反向工程出来的图如下:
就是Student表里的字段要去参考StudenIDCard表里的东西,外键名字我指定的是:“CARD_ID”
2:一对一,双向,外键关联
双向表现在类上就是:Student和stusentIDCard互相聚合一个实例,
双方都标注@OneToOne
Student类不变,参考上边那个,不赘述了
@Entitypublic class StudentIDCard {private int id;private String kinds;private Date datePublished;private Student student;@Id@GeneratedValuepublic int getId() {return id;}@OneToOne//互相持有,都加了OneToOnepublic Student getStudent() {return student;}
但这样就等于会在表里出现重复的字段,还要设置mappedBy,说明对方是主导,消除冗余
StudentIDCard类的getStudent()上
@OneToOne(mappedBy="StudentIDCard")说明对方是主导,对方(Student)的"cardId"属性已经做映射了,消除互相是外键的冗余
getStudent()
@OneToOne(mappedBy="cardId")//说明对方是主导,对方(Student)的"cardId"属性已经做映射了,消除互相是外键的冗余public Student getStudent() {return student;}
3:一对一,单向,主键关联
@JoinColumn换成@PrimaryKeyJoinColumn//指定外键名字@JoinColumn换成@PrimaryKeyJoinColumn//指定外键名字
- Hibernate基础之八:一对一单/双向,主/外键关联 @OneToOne@JoinColumn
- Hibernate基础:一对一单/双向,主/外键关联 @OneToOne@JoinColumn
- Hibernate一对一单双向外键关联
- Hibernate关联之一对一外键双向关联
- 一对一唯一外键关联(单双向)
- Hibernate学习总结:OneToOne双向外键关联
- Hibernate 一对一外键双向关联
- Hibernate 一对一外键双向关联
- Hibernate 一对一外键双向关联
- Hibernate双向一对一外键关联
- Hibernate一对一外键关联映射(双向)
- hibernate一对一外键双向关联
- hibernate一对一外键双向关联
- Hibernate 一对一外键双向关联
- Hibernate一对一外键双向关联
- Hibernate关系映射(一)一对一单向外键关联@OneToOne Annotation方式
- hibernate 单向外键关联,一对一双向外间关联凡是双向关联必设mappedBy!!!
- 13.Hibernate一对一外键&一对一主键双向关联
- Java中的String类型可以被继承吗?
- HttpServletRequest
- 数据结构之链表-单链表(1)
- iOS请求webservice
- android Launcher——拖放功能深入研究
- Hibernate基础之八:一对一单/双向,主/外键关联 @OneToOne@JoinColumn
- 强制关闭快播自动升级
- Voipswitch 简单使用说明
- 动态创建服务器端控件
- Win7删除exe文件刷新重现及删除慢问题解决方法
- UIColor,CGColor,CIColor三者的区别和联系
- 学习使用eclipse笔记
- Java中抽象类(Abstract Class)与接口(Interface)的区别?
- AS3组件