SSH如何获取外键表ID对应的Name问题
来源:互联网 发布:淘宝网图书松下幸之助 编辑:程序博客网 时间:2024/05/22 15:12
今天在写项目的时候遇到一个问题,就是只能得到 发布者的id,并在页面显示,并不能显示发布者的名字book.name。
我想实现在页面中显示发布者的名字book.name,而不是book.id,那么该如何实现呢?
很简单,就是在<many-to-one name="book" column="book" class="Book" /> 中 加上 fetch="select" lazy="false" 改为:
<many-to-one name="book" column="book" class="Book" fetch="select" lazy="false"/>
下面呢,在粘出一段摘自于Sara早安的关于fetch 与 lazy 的介绍:
fetch ,指定关联对象抓取的方式,可以设置fetch = "select" 和 fetch = "join"。select方式时先查询返回要查询的主体对象(列表),再根据关联外键id,每一个对象发一个select查询,获取关联的对象,形成n+1次查询;而join方式,主体对象和关联对象用一句外键关联的sql同时查询出来,不会形成多次查询。
在映射文档中定义的抓取策略将会有产生以下影响:
(1)通过get()或load()方法取得数据。
(2)只有在关联之间进行导航时,才会隐式的取得数据(延迟抓取)。
(3)在映射文档中显式的声明连接抓取做为抓取策略并不会影响到随后的HQL查询。
通常情况下,我们并不使用映射文档进行抓取策略的定制。更多的是,保持其默认值,然后在特定的事务中, 使用HQL的左连接抓取(left join fetch) 对其进行重载。这将通知 Hibernate在第一次查询中使用外部关联(outer join),直接得到其关联数据。 在条件查询 API中,应该调用 setFetchMode(FetchMode.JOIN)语句。
用一对多来举例:
fetch = "select"是在查询的时候先查询出一端的实体,然后在根据一端的查询出多端的实体,会产生1+n条sql语句;
fetch = "join"是在查询的时候使用外连接进行查询,不会差生1+n的现象。
lazy大家应该都熟悉了,就是延迟加载,可以设置lazy = "true" , lazy = "false" lazy = "proxy" 。
在hql查询中配置文件中设置的join方式是不起作用的(而在所有其他查询方式如get、criteria或再关联获取等等都是有效的),会使用select方式,除非你在hql中指定join fetch某个关联对象。
lazy 和fetch配合使用:
1、当lazy="true" fetch = "select" 的时候 , 这个时候是使用了延迟策略,开始只查询出一端实体,多端的不会查询,只有当用到的时候才会发出sql语句去查询 ;
2、当lazy="false" fetch = "select" 的时候 , 这个时候是使没有用延迟策略,同时查询出一端和多端,同时产生1+n条sql.
3、当lazy="true"/lazy="false" fetch = "join"的时候,自己认为这个时候延迟已经没有什么用了,因为采用的是外连接查询,同时把一端和多端都查询出来了,延迟没有起作用。
- SSH如何获取外键表ID对应的Name问题
- 关于FORM表单元素NAME和ID的获取问题
- hibernate获取外键ID对应的name及其他属性值
- dtree 的 使用 target 对应 ifame 的 name 而不是 id
- 根据name获取drawable的ID
- java 将list中name,对应的id放入map
- ID对应的值获取方式
- JavaScript中如何获取按钮所在DIV的ID或NAME?
- 元素JS和jquery如何获取点击元素的id或name属性
- CRM的dev(六)--在JS中如何获取到用户id对应的角色用户名
- 获取manifest里边meta-data 的name对应的value
- 获取凭证辅助账对应的列name
- 中央财经大学图书馆:座位对应的人Name获取
- 如何 获取用户的ID
- 获取元素name和id
- js:类名/id/name获取对象的实现
- 原生js获取 id name tagName的封装
- ecshop 获取所在商品的顶级分类ID及NAME
- 赵薇丈夫黄有龙不服处罚,要求证监会举行听证会,这比贾跃亭的吃相更难看
- Python抓取淘宝美人库
- 欢迎使用CSDN-markdown编辑器
- 通过pdf.js、openoffice实现客户端在线预览
- AWS:云服务故障频发
- SSH如何获取外键表ID对应的Name问题
- 编程记录
- html5拖动事件
- RocksDB 的常用调优参数
- 网络的开源在线考试系统介绍:
- java多线程中的一些方法
- 吉布斯抽样
- 看懂物联网未来发展的趋势
- Java交换排序————冒泡排序及快速排序