hibernate manytoone list 查询 发出的语句为什么是 1+N条

SLAM轨迹评估神器evo实战:从GPS到TUM格式的完整转换指南(附Python代码) 本文详细介绍了如何使用evo工具将GPS数据转换为TUM格式,以便进行SLAM轨迹评估。通过Python代码实现GPS到笛卡尔坐标的精确转换,并提供了完整的处理流程和实战案例,帮助开发者轻松完成从原始GPS数据到精确轨迹评估的全过程。特别适用于ORB-SLAM等视觉SLAM算法的性能验证。 阅读详情

1+N问题的描述:举例,多个主题(Topic)属于一个帖子(Category),一个帖子含有多个主题。当只需要查询Topic时不要查询Category时,如果@ManyToOne的属性fetch=FetchType.EAGER,这时查询所有Topic时,每查询一个Topic就会多产生一个SQL语句查询相关的Category表的数据,这样要是有N条Topic数据,就会产生1+N条SQL语句。同样的在@OneToMany的情况下,要是在Many方设置fetch=FetchType.EAGER,同样也会产生1+N的问题。

 

解决方案有三种:

  1. fetch=FetchType.LAZY,设为懒加载

  2. @BatchSize(size=5)代表一次取5条数据,这样取5条数据只要发出一条SQL语句,注意是用在被关联类上的(不建议用)

  3. 迫切左外连接检索 join fetch(Criteria 查询默认就是join fetch)

下面请看代码:

Category类

Java代码  收藏代码
  1. package com.lbx.model;  
  2.   
  3. import javax.persistence.Entity;  
  4. import javax.persistence.GeneratedValue;  
  5. import javax.persistence.Id;  
  6.   
  7. import org.hibernate.annotations.BatchSize;  
  8.   
  9. @Entity  
  10. @BatchSize(size=2)  
  11. public class Category {  
  12.       
  13.     private int id;  
  14.     private String name;  
  15.       
  16.     @Id  
  17.     @GeneratedValue  
  18.     public int getId() {  
  19.         return id;  
  20.     }  
  21.     public void setId(int id) {  
  22.         this.id = id;  
  23.     }  
  24.     public String getName() {  
  25.         return name;  
  26.     }  
  27.     public void setName(String name) {  
  28.         this.name = name;  
  29.     }  
  30.       
  31. }  

 

Topic类

Java代码  收藏代码
  1. package com.lbx.model;  
  2.   
  3. import javax.persistence.Entity;  
  4. import javax.persistence.FetchType;  
  5. import javax.persistence.GeneratedValue;  
  6. import javax.persistence.Id;  
  7. import javax.persistence.ManyToOne;  
  8.   
  9. @Entity  
  10. public class Topic {  
  11.   
  12.     private int id;  
  13.     private String title;  
  14.     private Category category;  
  15.       
  16.     @Id  
  17.     @GeneratedValue  
  18.     public int getId() {  
  19.         return id;  
  20.     }  
  21.     public void setId(int id) {  
  22.         this.id = id;  
  23.     }  
  24.     public String getTitle() {  
  25.         return title;  
  26.     }  
  27.     public void setTitle(String title) {  
  28.         this.title = title;  
  29.     }  
  30.       
  31.     //@ManyToOne(fetch=FetchType.LAZY)  
  32.     @ManyToOne  
  33.     public Category getCategory() {  
  34.         return category;  
  35.     }  
  36.     public void setCategory(Category category) {  
  37.         this.category = category;  
  38.     }  
  39.       
  40. }  

 

 

hibernate.cfg.xml文件配置

Xml代码  收藏代码
  1. <?xml version='1.0' encoding='utf-8'?>  
  2. <!DOCTYPE hibernate-configuration PUBLIC  
  3.         "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  
  4.         "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">  
  5.   
  6. <hibernate-configuration>  
  7.   
  8.     <session-factory>  
  9.   
  10.         <!-- Database connection settings -->  
  11.         <property name="connection.driver_class">com.mysql.jdbc.Driver</property>  
  12.         <property name="connection.url">jdbc:mysql://localhost:3306/testhib</property>  
  13.         <property name="connection.username">root</property>  
  14.         <property name="connection.password">root</property>  
  15.   
  16.         <!-- JDBC connection pool (use the built-in) -->  
  17.        <!-- <property name="connection.pool_size">1</property> -->   
  18.   
  19.         <!-- SQL dialect -->  
  20.         <property name="dialect">org.hibernate.dialect.MySQLDialect</property>  
  21.   
  22.         <!-- Enable Hibernate's automatic session context management -->  
  23.         <!-- <property name="current_session_context_class">thread</property>  -->  
  24.   
  25.         <!-- Echo all executed SQL to stdout -->  
  26.         <property name="show_sql">true</property>  
  27.         <property name="hibernate.format_sql">true</property>  
  28.   
  29.         <!-- Drop and re-create the database schema on startup -->  
  30.         <property name="hbm2ddl.auto">update</property>  
  31.   
  32.         <mapping class="com.lbx.model.Category"/>  
  33.         <mapping class="com.lbx.model.Topic"/>  
  34.         <mapping class="com.lbx.model.Msg"/>  
  35.           
  36.   
  37.     </session-factory>  
  38.   
  39. </hibernate-configuration>  

 

 

测试代码

Java代码  收藏代码
  1. package com.lbx.model.test;  
  2.   
  3. import java.util.List;  
  4.   
  5. import javax.persistence.FetchType;  
  6. import javax.persistence.ManyToOne;  
  7.   
  8. import junit.framework.TestCase;  
  9.   
  10. import org.hibernate.Query;  
  11. import org.hibernate.Session;  
  12. import org.hibernate.lucene.Text;  
  13.   
  14. import com.lbx.hibernate.Util.HibUtil;  
  15. import com.lbx.model.Category;  
  16. import com.lbx.model.Msg;  
  17. import com.lbx.model.Topic;  
  18.   
  19. public class Test extends TestCase {  
  20.       
  21.     @Text  
  22.     public void save(){  
  23.         Session session = HibUtil.getSession();  
  24.         session.beginTransaction();  
  25.           
  26.         for (int i = 0; i < 3; i++) {  
  27.             Category c = new Category();  
  28.             c.setName("c" + i);  
  29.             Topic t = new Topic();  
  30.             t.setTitle("t" + i);  
  31.             t.setCategory(c);  
  32.             session.save(c);  
  33.             session.save(t);  
  34.         }  
  35.           
  36.         session.beginTransaction().commit();  
  37.         session.close();  
  38.     }  
  39.       
  40.     //1+N问题(这里我只要取出Topic就可以了)  
  41.     @Text  
  42.     public void testHQL_01(){  
  43.         Session session = HibUtil.getSession();  
  44.         session.beginTransaction();  
  45.           
  46.         //List<Topic> topics = (List<Topic>)session.createCriteria(Topic.class).list();  
  47.         /** 
  48.          * 这里要是不把Topic类中不设 @ManyToOne(fetch=FetchType.LAZY),这里就要发很多SQL语句,关联的表都会查 
  49.          * 但是设了@ManyToOne(fetch=FetchType.LAZY) 之后就不会发出查询相关表的查询语句,用到的时候才发出 
  50.          */  
  51.         Query q = session.createQuery("from Topic");  
  52.         List<Topic> topics = (List<Topic>)q.list();  
  53.         System.out.println(topics.size());  
  54.         for (int i = 0; i < topics.size(); i++) {  
  55.             System.out.println(topics.get(i).getId() + "  " + topics.get(i).getTitle());  
  56.         }  
  57.         session.beginTransaction().commit();  
  58.         session.close();  
  59.     }  
  60.       
  61.     //用到被关联表的信息  
  62.     @Text  
  63.     public void testHQL_02(){  
  64.         Session session = HibUtil.getSession();  
  65.         session.beginTransaction();  
  66.           
  67.         //List<Topic> topics = (List<Topic>)session.createCriteria(Topic.class).list();  
  68.         /** 
  69.          * 这里要是不把Topic类中不设 @ManyToOne(fetch=FetchType.LAZY),这里就要发很多SQL语句,关联的表都会查 
  70.          * 但是设了@ManyToOne(fetch=FetchType.LAZY) 之后就不会发出查询相关表的查询语句,用到的时候才发出 
  71.          */  
  72.         Query q = session.createQuery("from Topic");  
  73.         List<Topic> topics = (List<Topic>)q.list();  
  74.         System.out.println(topics.size());  
  75.         for (int i = 0; i < topics.size(); i++) {  
  76.             System.out.println(topics.get(i).getId() + "  " + topics.get(i).getTitle());  
  77.             /** 
  78.              * 注意,在这里要用到Category类的信息,所以就会发出相关的查询信息 
  79.              */  
  80.             System.out.println(topics.get(i).getCategory().getId() + "  " +   
  81.                     topics.get(i).getCategory().getName());  
  82.         }  
  83.         session.beginTransaction().commit();  
  84.         session.close();  
  85.     }  
  86.       
  87.     //@BatchSize的使用,其属性size=5就代表一次取5个  
  88.     @Text  
  89.     public void testHQL_03(){  
  90.         Session session = HibUtil.getSession();  
  91.         session.beginTransaction();  
  92.           
  93.         //List<Topic> topics = (List<Topic>)session.createCriteria(Topic.class).list();  
  94.         /** 
  95.          * 这里要是不把Topic类中不设 @ManyToOne(fetch=FetchType.LAZY),这里就要发很多SQL语句,关联的表都会查 
  96.          * 但是设了@ManyToOne(fetch=FetchType.LAZY) 之后就不会发出查询相关表的查询语句,用到的时候才发出 
  97.          */  
  98.         Query q = session.createQuery("from Topic");  
  99.         List<Topic> topics = (List<Topic>)q.list();  
  100.         System.out.println(topics.size());  
  101.         for (int i = 0; i < topics.size(); i++) {  
  102.             System.out.println(topics.get(i).getId() + "  " + topics.get(i).getTitle());  
  103.             /** 
  104.              * 注意,在这里要用到Category类的信息,所以就会发出相关的查询信息 
  105.              */  
  106.             System.out.println(topics.get(i).getCategory().getId() + "  " +   
  107.                     topics.get(i).getCategory().getName());  
  108.         }  
  109.         session.beginTransaction().commit();  
  110.         session.close();  
  111.     }  
  112.       
  113.     // join fetch,迫切左外连接检索  
  114.     @Text  
  115.     public void testHQL_04(){  
  116.         Session session = HibUtil.getSession();  
  117.         session.beginTransaction();  
  118.         //Criteria 查询默认就是join fetch  
  119.         //List<Topic> topics = (List<Topic>)session.createCriteria(Topic.class).list();    
  120.         /** 
  121.          * 这里要是不把Topic类中不设 @ManyToOne(fetch=FetchType.LAZY),这里就要发很多SQL语句,关联的表都会查 
  122.          * 但是设了@ManyToOne(fetch=FetchType.LAZY) 之后就不会发出查询相关表的查询语句,用到的时候才发出 
  123.          */  
  124.         Query q = session.createQuery("from Topic t left join fetch t.category c");  
  125.         List<Topic> topics = (List<Topic>)q.list();  
  126.         System.out.println(topics.size());  
  127.         for (int i = 0; i < topics.size(); i++) {  
  128.             System.out.println(topics.get(i).getId() + "  " + topics.get(i).getTitle());  
  129.         }  
  130.         session.beginTransaction().commit();  
  131.         session.close();  
  132.     }  
  133.       
  134. }  
【08】C#实战篇——C#调用C++ 动态库dll,报错 “无法加载DLL“xxx.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。” 摘要: 本文详细分析了C#调用C++封装的DLL时出现“无法加载DLL”错误的排查与解决方法。通过案例演示,列举了常见原因(如平台不匹配、路径错误、依赖缺失等),并重点介绍了使用VS的dumpbin工具检测DLL依赖项的方法。最终定位问题为缺失依赖的LineApi.dll和opencv_world455d.dll,将其放入C#的exe目录后解决。文章还对比了C++与C#的报错差异,提供了通用解决方案,包括检查运行时库、环境变量等,帮助开发者高效解决类似问题。 关键词: C#调用C++ DLL、dumpbin 阅读详情

相关推荐

每天10分钟,混剪视频Agent产出50条爆款,单月变现6位数(喂饭级教程)

混剪视频是指将多个视频片段、图片或音频素材进行剪辑组合,创造出新的视频内容。随着Coze上线联动剪映功能,混剪视频制作正在进入自动化时代,为创作者带来巨大便利。高效自动化处理:AI可以自动完成琐碎的剪辑工作,让创作者省下大量时间专注于项目策划和创意。批量素材产出:特别适用于抖音、小红书和视频号等平台上的养生、科普、心理、疗愈等垂直领域,可以自动化批量生产图片和视频素材。引流获客:通过优质内容吸引目标受众知识变现:通过教学传授技术工具变现:将搭建好的工作流作为产品销售。

汤师爷的博客 864

解决hibernate双向关系造成的一方重复执行SQl,或者死循环的问题

  系统采用struts-json hibernate3. 在对关联表配置manytoone onetomany双向关联的时候,在执行一方的时候,会发现打印出来的SQL语句多执行了一次或者多次。经过调试,发现是在struts-json进行序列化时把关联的对象再次取了一次。 经过多次百度,google查询,最终找到解决办法,把不需要的过滤掉就可以了。 有人建议在实体字段上使用@json(ser...

weixin_34117211的博客 450

调用D3D11硬解码和渲染VideoProcessor版本

在https://blog.youkuaiyun.com/robothn/article/details/78781321一文中使用shader来显示FFMPEG硬解码后的YUV420P,本文调用D3D11的videoprocessor来进行图像空间变换和尺寸变换,取得了较好的效果。 1.初始化D3D11设备、videodevice等数据结构 FFMPEG调用D3D11硬解码,获取其对应的device,videodevice。。。 FFMPEG使用av_hwdevice_find_type_by_name调用D3d11

zlyadvocate的博客 9285

Jpa列表查询@OneToOne,@OneToMany出现多条sql(N+1)解决办法

最近用了jpa的@OneToOne,@OneToMany管理对象,但是在查询分页列表,列表的过程中触发了N+1的sql查询,这里我用了@NamedEntityGraphs去解决。利用@NamedEntityGraphs查询,实际就是把三张表的数据构建成一张虚拟表进行数据查询。从控制台的输出我们可以看见,当前查了多少条数据就执行了多少条sql。在父实体中加入@NamedEntityGraphs后。调用查询列表接口后,只执行了一条sql。

weixin_50520054的博客 1497

LabVIEW通过ActiveX控件实现与三菱FX5U PLC的高效数据交互

本文详细介绍了如何利用LabVIEW的ActiveX控件,通过三菱官方MX Component工具包实现与FX5U PLC的高效数据交互。文章从环境配置、控件插入到实战代码解析,系统讲解了连接建立、数据读写及资源释放的全流程,并提供了关键的避坑指南,帮助工程师快速构建稳定可靠的上位机通讯系统。

weixin_29197051的博客 373

大数据之VIP(Virtual IP,虚拟IP)负载均衡

VIP(Virtual IP,虚拟IP)负载均衡是一种在计算机网络中常用的技术,用于将网络请求流量均匀地分散到多个服务器上,以提高系统的可扩展性、可靠性和性能。

赵玉的专栏 4123

Hibernate-一对多OneToMany

例子: 一个班级对应多个学生 一对多:一的一方用se接口集合,不能用HashSet,因为Hibernate有自己的set实现。 set与list区别:set无序,set不重复 班级表: public class Clazz { private int id; private String name; private Set<Student> students; //get、set省略 } Clazz.hbm.xml 学生表: p

weixin_45335305的博客 1074

从入门到精通|Yalmip+Cplex在电力系统中的应用(Matlab代码实现)

​ 火电成本包括运行成本、碳捕集成本,其中火电运行成本由运行维护成 本和发电煤耗成本构成,发电煤耗与其出力关系: ,F 为机组煤耗量(kg/h),P 为机组出力/MW;运行维护成本按照 0.5 倍煤耗成本考虑,碳捕集成本取决于碳排放量及碳捕集单价,火电机组相关参数如附表 1 所示,电煤价格为 700 元/t ​

weixin_46039719的博客 1552

Hibernate中1+N问题以及解决方法

1. Hibernate中的1+N问题描述           在多对一关系中,当我们需要查询多的一方对应的表的记录时,可以用一条sql语句就能完成操作。然而,在多的一方的实体类中的@ManyToOne标注的fetch的默认值是fetchType.EAGER,这时,hibernate除了发出查询多的一方对应的表的记录的sql语句外,还会发出n(多方记录数)条sql语句,这就是1+n问题。如

1万+

基于A*算法的二维栅格地图路径规划与避障MATLAB仿真

本文将介绍如何使用MATLAB编写基于A*算法的二维栅格地图路径规划与避障的仿真程序。我们可以使用二维数组表示地图,其中每个元素表示一个栅格的状态,例如1表示障碍物,0表示可行走区域。接下来,我们需要定义A*算法的节点类。G值表示从起始节点到当前节点的代价,H值是启发式函数估计的从当前节点到目标节点的代价。算法,我们可以有效地找到起始点到目标点的最短路径,并在仿真中进行可视化展示。算法的基本思路是从起始节点开始,按照一定的启发式函数选择下一个节点,直到找到目标节点或者遍历完所有可行走区域。

ByteWhizX的博客 1273

Microsoft Dynamics 365软件二次开发:Dynamics365部署与版本控制策略

在Microsoft Dynamics 365中,自定义实体允许开发者扩展系统以满足特定业务需求。自定义实体可以包含字段、选项集、关系和其他属性,与标准实体类似,但完全由用户定义。1. 登录到Dynamics 365环境。2. 转到“解决方案”区域,选择“自定义”。3. 在“自定义”菜单中,选择“实体”。4. 点击“新建”,输入实体名称,例如“客户反馈”。5. 添加字段,如“反馈类型”、“反馈日期”、“描述”等。6. 设置主键和唯一标识符。7. 定义关系,如与“客户”实体的关联。

kkchenjj的博客 2208

hibernate级联查询执行n+1次sqlt语句问题(内含解决办法,优化方式)

如果当SQL数据库中select语句数目过多,就会影响数据库的性能,如果需要查询n个Customer对象,那么必须执行n+1次select查询语句,下文就将为您讲解这个n+1次select查询问题。 在Session的缓存中存放的是相互关联的对象图。默认情况下,当Hibernate从数据库中加载Customer对象时,会同时加载所有关联的Order对象。以Customer和Order类为例,

u010523770的专栏 3482

微信小程序 - 获取当前日期时间(函数封装)

效果图 前言 摘自微信小程序demo程序中utils.js方法。 普通newDate()出来的日期时间,并不是我们想要的格式,所以要进行格式整理。 解决方案 打开utils.js文件(随意),复制以下代码: /** *获取当前时间 *@description自定义日期分钟秒数 *@param{Object}date-newData()对象 *@returnString */ functionformatTime(date){ //年月日

🏆 前端领域优质创作者 2843

关于hibernate的n+1问题以及解决办法

hibernate的n+1问题已经是一个很常见的问题了。 最近遇到了很多次的n+1问题,总结一下解决办法: 1.ManyToOne中的n+1: 当查询单个的时候,可以使用来进行让其join查询, 觉得manyToOne的n+1问题同样可以使用这种方法,其中FetchMode有三个参数: public enum FetchMode { /** ...

weixin_33968104的博客 104

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

18hibernate hibernate的性能优化之session.clear()、1+N问题、list和iterate的区别

1.session.clear() 注意session.clear()的运用,尤其在不断分页循环的时候 a.比如:在一个大集合中进行遍历,遍历msg,取出其中的含有敏感字样的对象 如果每次翻页都产生一个session,那之前的session就被清除了 (实际上由java虚拟机的GC帮忙清除),不会产生问题; 但如果一直在同一个session里不断读取,之前的数据因为存在引用,

好记性不如烂笔头 745

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Android ORM框架对比:LiteOrm、GreenDAO与Room实战解析

ORM(对象关系映射)技术通过将数据库表映射为编程语言中的对象,极大简化了数据持久化操作。其核心原理是在对象模型与关系数据库之间建立转换层,自动处理SQL生成与结果集解析。在Android开发中,ORM框架能显著提升开发效率,减少模板代码,特别适合需要频繁进行CRUD操作的场景。主流实现如GreenDAO采用编译时代码生成确保性能,Room提供官方支持的现代化特性,而LiteOrm则以轻量级设计见长。根据实测数据,使用ORM框架后代码量可减少80%,批量插入性能提升2倍以上。这些技术在电商用户数据管理、社交

z466459262的专栏 201

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

hibernate的N+1条SQL查询问题--Iterate和list

hibernate使用session.createQuery(hql)查询数据的时候,有两种查询方式 1、session.createQuery(hql).list() 2、session.createQuery(hql).iterate() 通过项目案例来简单了解下,项目结构如下: Book实体类代码 public class Book { private int id;

想念的专栏 997

Hibernate一对多设置了双向关联产生多余的SQL语句

解决一对多双向关联产生多余的SQL语句有两种办法 1.单方设置级联操作,但是有时候可能不会完全解决。 2.在一的一方使用inverse="true"使其放弃外键的维护全。(为什么在一的一方使用,而不在多的一方使用呢!中国有14亿人口,让国家主席记住每一个公民的名字显然不现实,但是14亿公民没人可以记住主席的名字) <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hi

weixin_40222311的博客 269

JPA查询下@ManyToMany导致的N+1次query的问题

这里写自定义目录标题概述假设模型添加数据解决方案 概述 Spring Data Jpa底层默认使用Hibernate作为ORM框架, Hibernate有一个非常典型的N+1查询的问题。这个问题在有些场景下会非常影响系统稳定性。 下面是实际工作中遇到的问题,主要背景如下: 系统使用Hibernate对配置模型进行抽象建模,配置模型存储在MySQL数据库中; 系统每隔一段时间,会全量加载所有配置信息,刷新实例本地的内存配置,由于使用了@ManyToMany、@ManyToOne、@OneToMany等注解,

镜悬xhs 2645

ManyToOne的xml配置 及 解决N+1问题

一:ManyToOne的cfg.xml配置 1.实体,省略setter&amp;getter public class User implements Serializable{ private static final long serialVersionUID = 1L; private Integer id;// 编号 private String account;...

thewebcode 356

Hibernate查询方式(many to many)

多对多(many to many) 导航查询 查询某个对象对应下的所有联系对象,使用对象导航实现 //查询cid=1客户,再查询这个客户里面所有联系人 Customer customer =session.get(Customer.class , 1); //再查询这个客户里面所有联系人 //直接得到客户里面联系人的set集合 Set linkman=customer.get

hzcxm69的博客 462

jpa mysql sql查询_Spring Boot / JPA / mySQL-多对一关系创建了太多的SQL查询

我有一个与mySQL db连接的简单的spring boot rest应用程序,我试图在简单的函数内优化查询数量:List messages = messagesRepository.findBySenderIdOrReceiverIdOrderByTimeDesc(senderId, receiverId);消息存储库:public interface MessagesRepository ex...

weixin_39860280的博客 160

Mybatis的OneToMany,ManyToOne和解决N+1查询问题

OneToMany,ManyToOne,N+1查询

戴暉的博客 1万+

Hibernate 多表关联 @ManyToOne

Hibernate在解决多表关联 针对一对多得情形引入了 @ManyToOne适用情况比如:user(用户)--role(角色),user(用户)-organ(机构) ……下面开始表演:Hibernate5参考文档数据结构参考@OneToOne@ManyToOne(fetch=FetchType.LAZY,cascade=CascadeType.ALL,optional=true)//多个用户对应...

学习使我快乐,每天都在进步! 1万+

hibernate 1+N问题

hibernate 映射Manytoone关系时,会产生1+N问题,优化方式1:把many一端的fetchType设为Lazy。2:进行表连接查询,如:from User u left join fetch  u.group g;

dokia123的专栏 404

Hibernate的那些事-manyToOne注解映射(List集合)

skewen的专栏 1617
上一篇: ajax完整教程
下一篇: Hibernate注解方法使用总结
满地节操1
博客等级 码龄10年 12粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值