社区
Java EE
帖子详情
hibernate关联弱问
看着奢扣
2011-09-20 11:13:10
弱问?
hibernate中提到的一对一单向外键关联和一对一双向外键关联,这个单向和双向怎么理解啊?最好给个例子。谢谢
...全文
64
3
打赏
收藏
hibernate关联弱问
弱问? hibernate中提到的一对一单向外键关联和一对一双向外键关联,这个单向和双向怎么理解啊?最好给个例子。谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
看着奢扣
2011-09-21
打赏
举报
回复
hi HeiBoyYang
你的例子就是双向关联的吧,主表类和从表类都有对方的对像,就是双向关联吗?
每天进步一点
2011-09-20
打赏
举报
回复
简单点说,比如人和身份证,这是一个一对一关系吧,所谓单向关联就是你只在某一端配置了<one-to-one>标签,这里我们假设你在人这端配置了这个标签,那么当你查询一个人的时候,就能查到身份证的信息,但是你要是想通过查身份证去查人的信息的话就不行,因为你这是一个单向关联,你没有在身份证中配置<one-to-one>标签,所谓双向关联就是你在身份证中也配置<one-to-one>标签.
HeiBoyYang
2011-09-20
打赏
举报
回复
设置双向外键关联与单向外键关联的区别是,在每个类都有对方类的引用.
同时,用annotation标签注解,只以那个来做关联,这样就不会生出多个外键关联
看例子,首先建立两个类分别如下
@Entity
public class Husband {
private int id;
private String name;
private Wife wife;
@OneToOne
public Wife getWife() {
return wife;
}
.....
然后建立另一个类
@Entity
public class Wife {
private int id;
private String name;
private Husband husband;
@OneToOne
public Husband getHusband() {
return husband;
}
public void setHusband(Husband husband) {
this.husband = husband;
}
......
这两个类都有对方的引用.就构成了多对多的条件.运行自动建表程序(同一对一单向外键关联),看结果
11:46:35,718 DEBUG SchemaExport:377 -
create table Husband (
id number(10,0) not null,
name varchar2(255),
wife_id number(10,0),
primary key (id)
)
11:46:35,750 DEBUG SchemaExport:377 -
create table Wife (
id number(10,0) not null,
name varchar2(255),
husband_id number(10,0),
primary key (id)
)
11:46:35,765 DEBUG SchemaExport:377 -
alter table Husband
add constraint FKAEEA401B74A158F3
foreign key (wife_id)
references Wife
11:46:35,781 DEBUG SchemaExport:377 -
alter table Wife
add constraint FK292331AE37DC61
foreign key (husband_id)
references Husband
11:46:35,796 DEBUG SchemaExport:377 -
create sequence hibernate_sequence
11:46:35,812 INFO SchemaExport:268 - schema export complete
可以看到建立了两张表,同时两张表都建立了外键的关联.但是这样造成冗余,关键是更新表记录的时候麻烦,因为你还要互相考虑到关联性,所以一般是一个表建立了外键就行.那么怎么实现?
看例子
修改其中某个类的get方法,以wife类为例,修改如下
public class Wife {
private int id;
private String name;
private Husband husband;
@OneToOne(mappedBy="wife")
public Husband getHusband() {
return husband;
}
...
这段话的具体理解是,首先Wife这个类是与Husband类做一对一关联的,同时是以Husband类里面的getWife()这个属性来做maping的,做映射的.这个时候,就只在husband表生成外键.(简单理解,两个类的外键关联,以一个类为准,只在husband表生成外键,wife表不需要生成外键)
看结果
11:58:01,343 DEBUG SchemaExport:377 -
create table Husband (
id number(10,0) not null,
name varchar2(255),
wife_id number(10,0),
primary key (id)
)
11:58:01,375 DEBUG SchemaExport:377 -
create table Wife (
id number(10,0) not null,
name varchar2(255),
primary key (id)
)
11:58:01,453 DEBUG SchemaExport:377 -
alter table Husband
add constraint FKAEEA401B74A158F3
foreign key (wife_id)
references Wife
11:58:01,468 DEBUG SchemaExport:377 -
create sequence hibernate_sequence
11:58:01,468 INFO SchemaExport:268 - schema export complete
tipedia:非官方TiDB百科,目标收录所有TiDB开发维护使用过程中可能会碰到的概念配置项其他等等
Tipedia 这是什么 这是一个非官方的TiDB相关概念的百科,目标收录所有TiDB开发/维护/使用过程中可能会碰到的概念/配置项/其他等等。 为什么会有这个东西 在工作中,无论是读代码,审阅设计文档,看事故复盘,查监控还是参与他人讨论,我们都会常常碰到我们不甚了解的概念: (以下内容收集自企业微信) 修改什么? DM是什么的简称呀。 这个schrodinger_test是啥? (以下内容收集自Slack) 请
问
这个hot_peer是做什么用的呀? ndv是啥呀? 抱歉,术语“修改交易”是否意味着交易会更改表/数据库的元数据? (以下内容收集自google doc) unique filter的含义是什么,搜了下文档没搜到。 下面两个是来搞笑的。就算是搞笑的也很有价值! (搜集自微信)
弱
问
413是什么 不知道渡渡鸟是什么 这些
问
题的人中许多都是经验丰富的优秀工程师,就
弱
问
JSP中的<%= %>和${ }到底有什么区别?
弱
问
JSP中的和${ }到底有什么区别? 2011-11-03 11:11匿名 | 浏览 0 次 分享到: 2011-11-03 11:33 提
问
者采纳 只能得到当前面定义的值 即你在这个页里有100%> 你在下面才可以使用 ${ }这个是el表达式 可以从上下文中得到值 具体你可以看一下 http://apps.h
php本地环境如果更换版本,
弱
问
php 如何更换版本?
我5.6版本./configure && make && make install的时候没有 --prefix=而在7版本的时候./configure --prefix=path && make && make install这时候我怎么能让默认的php就是path下面的php呢回复内容:我5.6版本./configure &...
php 不恒等,Re:
弱
问
:Latex里不恒等号(三横一撇) - 精华区 - 数学科学学院(SMS)版 - 北大未名BBS...
发信人:vonNeumann(YP04->DSEC@SMS|冯·诺伊曼),信区:SMS标题:Re:
弱
问
:Latex里不恒等号(三横一撇)怎么打?发信站:北大未名站(2007年05月28日15:10:34星期一),转信\usepackage{txfonts}\nequiv或\usepackage{amssymb}\not\equivmondist (猫を被る。。ブイブ...
如何产生一个随机排列?(
弱
问
)
如何产生一个由0,1,2......n-1组成的随机排列,这个随机排列由随机排列是一个随机排列产生器产生的,可以用随机数生成器来编写请高手多多指教呀
Java EE
67,513
社区成员
225,879
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章