- 浏览: 678370 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (141)
- java (58)
- SQL (7)
- java开源 (2)
- javascript (3)
- struts2 (2)
- oracle (6)
- junit (1)
- js报表 (1)
- jQuery (5)
- 插件安装 (1)
- myeclipse (1)
- xfire (1)
- weblogic (1)
- hibernate (6)
- loading (1)
- jbpm (3)
- 物语 (0)
- android (14)
- spring (20)
- BigDecimal (1)
- view (1)
- 总结 (2)
- application (1)
- Netty (5)
- aop (1)
- redis (7)
- double (1)
- restful (1)
- cache (3)
- profile (1)
- redisTemplate (1)
- poi (3)
- excel导出 (1)
- mysql (7)
- group (4)
- replication (4)
- proxysql (1)
- windows (1)
- version (1)
- mongodb (2)
- RocketMQ (1)
- MQ (1)
- RSA (1)
- 日志 (2)
- ip (1)
- socket (1)
- hibernate-validator (1)
- delayQueue (1)
- spring-retry (1)
- rabbitmq (3)
- httpclient (1)
- tools (1)
- 增量发布 (1)
- web (3)
- spring-boot (5)
- druid (2)
- pageHelper (1)
- freemarker (1)
- RequestMapping (1)
- 性能优化 (2)
- springBoot (1)
- docker (2)
- 安全 (0)
- 国际化 (3)
- websocket (1)
- stomp (1)
- shiro (1)
- 网络安全 (2)
- 锁 (1)
- logback (1)
最新评论
-
changerzhuo_319:
谢谢大佬, 查了一天了没解决
Spring-boot构建多模块依赖工程时,maven打包异常:程序包xxx不存在 -
迪伦少校:
spring越来越优秀的同时,也越来越复杂
spring核心技术(1) -
hbxflihua:
ivi13 写道这种方式会有个问题,假如有个商户的交易量特别大 ...
使用spring-retry实现支付系统异步通知 -
ivi13:
这种方式会有个问题,假如有个商户的交易量特别大,通知全部失败, ...
使用spring-retry实现支付系统异步通知 -
ckxlnd:
挺好的 有借鉴意义
重写DispatcherServlet获取springmvc 所有RequestMapping的url
在查询A表时关联了B表、C表,C表和A表是多对一的关系,B和C一对一的关系。我将三张表的数据整合在一起做成一个视图。hibernate多表查询中单表的同一条记录内存共享,对于有多条C表记录与A表对应时,Hibernate不会对A表进行重复查询,与之关联的C表的多条记录也不会继续查询,而仅仅是复制之前C的对象。这不是我想要的结果。
Hibernate管理的表原则上需要有主键,Hibernate对数据的所有操作大都以这个主键为准。主键有一般主键和组合主键两种。以上的三张表各有各的主键,C表和A表是多对一的关系。如果以C表的主键为视图的主键则不会出现上述问题,当以A表的主键为视图中的主键时,由于结果集中A表的主键有重复,Hibernate根据缓存机制进行了不再重复检索的优化。这种优化在此时来说无疑是画蛇添足的。
那么如何避免这种问题呢?下面给出两种解决方案。
方案一:临时构建一个唯一主键,该主键只用于取消Hibernate的重复对象不检索的功能。这种方案具有通用性。不管你的组合查询中有多少张表,设立一个临时唯一主键,就可以得到你想要的结果。这里我们将uuid设置为主键,原来的主键改为一个普通的属性。
select sys_guid() as uuid, t.* from ( select distinct a.*,b.is_complated from A a , C c,B b where a.aid=c.aid and c.cid=b.cid )t;
方案二:如上述问题,这里C和A有着多对一的关联关系。C中有着A的外键,通过C可以查询所有A表中的内容。这时可以将C表的主键设为视图中的主键。推而广之,如果你想通过组合查询查询更多多张表中的记录返回在一个结果集中,建议选择一个可以唯一标示其中每条记录的列作为主键,或者通过创建组合主键的方式来达到想要的结果。但这种方式有时存在局限性,考虑不周还是很容易再次出现上述问题。
发表评论
-
Spring Gateway 接口返回值脱敏
2023-10-20 09:55 1992package com.huatech.gateway.f ... -
logback 常用配置及说明
2020-05-28 15:41 708<?xml version="1.0& ... -
springboot中增强druid实现数据库账号密码加解密
2020-03-11 13:31 1554针对目前越来越严的安全等级要求,我们在做产品 ... -
java常用命令
2020-01-14 13:25 1089# 1、查询java进程id jps -v ... -
poi excel导入工具类
2019-11-20 14:00 713poi excel导入工具类ImportUtil i ... -
通过spring-context创建可执行jar
2019-04-23 13:52 10971、新建一个maven工程; 2、pom.xml中 ... -
什么情况下Java程序会产生死锁?如何定位和修复死锁
2019-04-18 20:38 1432死锁是一种特定的程序状态,在实体之间,由于循环依赖导致彼此 ... -
反射机制和动态代理的原理
2019-04-13 14:02 1995反射机制是Java语言提供的一种基础功能,赋予程序在运行时 ... -
String、StringBuffer、StringBuilder的区别?
2019-04-13 10:00 752Java的基本类型有八种 ... -
强引用、软引用、弱引用、幻象引用有什么区别?具体使用场景是什么?
2019-04-12 15:10 753在 Java 语言中,除了原始数据类型的变量,其他 ... -
Exception与Error的区别?
2019-04-11 09:25 561Java语言在设计之初就 ... -
应用国际化(3)
2018-12-27 21:13 828前两篇介绍了应用国际化的注意事项和提示语国际化的简单实现。后 ... -
应用国际化(2)
2018-12-26 20:39 802上一篇介绍了应用国际化需要考虑的问题,本篇介绍后端如何实现 ... -
应用国际化(1)
2018-12-26 20:08 831最近在做数字资产交 ... -
性能优化实战-2
2018-09-28 10:15 1172我们在做架构设计的时候,会提到几个关键词:高性能、高 ... -
性能优化实战-1
2018-09-27 20:04 1113系统优化大致可以分 ... -
rabbitmq批量处理
2018-04-08 17:35 9441我们通过spring-amqp操作rabbitmq是极其简 ... -
java进程CPU过高问题定位
2018-03-14 09:06 22971、top命令查看过高CPU的pid,命令:top ... -
spring-boot集成RabbitMQ
2018-01-16 16:38 1311RabbitMQ的安装不在此赘述,想了解的可以参考: ... -
重写DispatcherServlet获取springmvc 所有RequestMapping的url
2018-01-09 10:41 30551、重写DispatcherServlet i ...
相关推荐
"Java中单表和多表级联的增删改查"这个主题涵盖了基础的数据库操作以及更复杂的关联查询技术。以下是对这些知识点的详细解释: 1. **单表的增删改查(CRUD)**: - **Create(创建)**: 在Java中,通常使用JDBC...
总结,处理SQL Server中单引号问题的关键在于理解转义字符的概念以及如何利用参数化查询的优势。在实际编程中,推荐使用参数化查询,以提高性能和安全性。同时,为了防止SQL注入攻击,应避免直接在SQL语句中拼接用户...
虽然`SELECT`语句通常会产生包含多条记录的结果表,但在C程序中往往需要逐条处理这些记录。因此,需要在SQL的集合处理方式和C程序的单条记录处理方式之间建立一种桥梁,这就是游标的用途。游标是一种SQL对象,用于...
### Java多线程编程环境中单例模式的实现 #### 概述 单例模式是一种常用的软件设计模式,它确保一个类只有一个实例,并提供一个全局访问点。在Java中,单例模式的应用非常广泛,特别是在资源管理、日志记录、...
网页中单表格支持横纵表头锁定,网页中单表格支持横纵表头锁定
3. **性能考虑**:对于非常大的Excel文件,处理过程中可能会消耗较多的内存资源。可以通过适当优化代码逻辑或限制一次性处理的工作表数量来改善性能。 4. **安全性**:如果涉及到敏感数据的处理,请确保遵循相关的...
本项目“九九乘法表-MFC中单文档界面”就是使用MFC框架来实现的一个经典示例,旨在展示如何在Windows环境下用C++编程实现一个简单的教育软件。 单文档界面(Single Document Interface, SDI)是一种常见的应用程序...
### MFC中单文档与多文档使用总结 #### 重要概念与区别 MFC(Microsoft Foundation Classes)作为Visual C++中的一个重要的类库,提供了丰富的功能来帮助开发者快速构建Windows应用程序。在MFC中,单文档界面(SDI...
在IT行业中,尤其是在金融自助设备或者智能零售终端的设计与开发领域,"一种在BS系统中单纸币钞箱交易处理方法"是一个重要的技术主题。BS系统通常指的是基于浏览器/服务器架构的应用系统,它广泛应用于互联网服务,...
在当前阶段,已有的基于深度学习模型的方法主要集中在数据库中单表SQL查询的生成上,但尚未能够有效处理多表SQL查询的生成问题。 为了解决这个问题,研究团队采用了基于SQL语句模板填充的方法。这种方法的核心思想...
在Microsoft Visual C++ (VC++) 开发环境中,创建一个单文档界面(Single Document Interface, SDI)应用程序并实现静态分隔条(Fixsplit)是一项常见的需求。这允许用户在同一个文档窗口内查看和操作不同的视图,...
数据库 计算单条 数据大小 只需执行该sql 即可知道单条数据大小
JSP开发之hibernate之单向多对一关联的实例 一对多的基础上来测试单向多对一的关联 hibernate多对一的关联关系定义: 和单向一对多不同的是:一对多是在意的一方的一方定义set集合,在映射文件中 :单向多...
在SQL语句中,单引号和双引号的处理方式是至关重要的,尤其是在处理字符串、数字、日期和布尔值时。以下是对SQL语句中单引号和双引号处理方法的详细解释: 1. **插入字符串型数据**: 当你需要插入字符串类型的...
在单组前测后测时间序列准实验设计中,研究者对同一组实验对象在实验处理前后进行多次测量。实验结构通常包括若干次前测、实验处理以及随后的后测。例如,教师可能在实验开始前几周对学生进行个别阅读学习的前测,...
在Excel中,选项按钮是一种非常实用的控件,尤其在制作单选题或者进行多选项交互时。本教程主要介绍了如何利用Excel的选项按钮来创建一份单选题测试。以下是详细步骤: 1. **插入分组框**: 在创建单选题时,通常...
在这个“multisim中单相桥式PWM逆变电路的仿真”项目中,我们将深入探讨如何利用Multisim来构建和分析一个基于IGBT(绝缘栅双极晶体管)的单相桥式脉宽调制(PWM)逆变电路。 首先,IGBT是一种电力电子开关元件,...
本篇将深入探讨如何使用Delphi来实现对Access数据库中单表的组合查询。 组合查询(也称为联合查询)是指将两个或更多查询的结果合并成一个结果集。在Access中,我们通常使用SQL(结构化查询语言)来执行这样的操作...
在这个示例项目中,我们使用 PUBS 数据库中的 EMPLOYEE 表,同时可以用 SQL 语法把其中两条记录中的 FNAME 改为“Paolo''f“、“Paolo'f“。 结论 MS-SQL Server 中单引号的两种处理方法可以解决数据库开发中常见...