auto-import是什么意思呢?

我们经常会写这样一个HQL语句:

from User u where u.name='罗灿锋';

绝大多数时候,这样写是不会发生问题的。

hibernate在处理这个HQL时,会先将其翻译成一条数据库能够识别的sql语句。翻译的依据当然是实体与数据库表之间的映射关系了。

现在我们就给他制造一些问题,我们让hibernate同时管理两个相同名称的实体:org.mysoa.security.model.User和com.kedacom.ksoa.security.model.User。

这时,我们再将上面那条HQL给hibernate解析,他还能顺利地将其翻译成一条sql语句吗?答案当然是否定的,他不知道你要查 org.mysoa.security.model.User还是com.kedacom.ksoa.security.model.User。

所以,一条正确的HQL应该是这样的:

from org.mysoa.security.model.User u where u.name='罗灿锋';

但是,大多数时候,一个系统里不会出现同名的实体,如果要求所有HQL都这么写就不好了。所以hibernate提供一个auto-import属 性,当你不指定具体的实体时(只指定from User),他会自动找到唯一的名为User的实体映射,将其补全为org.mysoa.security.model.User。

当你的系统中确实要需要两个同名的实体时

当你的系统中确实要需要两个同名的实体时,我们需要做两件事:

    1. 将这两个同名的实体的映射文件都要设置为auto-import
    2. 所有关于这两个实体的HQL,都需要明确指定其全限定名(如org.mysoa.security.model.User)

有人要问了,只要你做了第二条就够了呀,只要你保证所有的HQL都写了全限定名,那么hibernate解析就不会出错,系统应该是可以运行的。其实不然。hibernate怎么知道你所有的HQL都写了全限定名?事实上,hibernate在系统加载过程中,如果发现有两个同名的实体,但 是有任何一个没有设置auto-import=false,他就会抛出异常并停止加载,他以这种方式来确保你的auto-import问题在系统加载时就 暴露出来,而不是延迟到真正执行一个有问题的HQL时才抛出问题。

Hibernate的auto-import属性详解的更多相关文章

  1. Hibernate配置文件和映射文件详解

    Hibernate是一个彻底的ORM(Object Relational Mapping,对象关系映射)开源框架. 我们先看一下官方文档所给出的,Hibernate 体系结构的高层视图: 其中PO=P ...

  2. HTML video 视频标签全属性详解

    HTML 5 video 视频标签全属性详解   现在如果要在页面中使用video标签,需要考虑三种情况,支持Ogg Theora或者VP8(如果这玩意儿没出事的话)的(Opera.Mozilla.C ...

  3. CSS2.1SPEC:视觉格式化模型之width属性详解(下)

    本文承接CSS2.1SPEC:视觉格式化模型之width属性详解(上),继续分析CSS视觉格式化模型中width以及相关值的计算问题: 注:与上节不同,本节的demo中由于出现了float,absol ...

  4. DIV css中cursor属性详解-鼠标移到图片变换鼠标形状 (转)

    css中cursor属性详解-鼠标移到图片变换鼠标形状   语法: cursor : auto | all-scroll | col-resize| crosshair | default | han ...

  5. HTML-▲▲video 视频标签全属性详解▲▲

    HTML 5 video 视频标签全属性详解   现在如果要在页面中使用video标签,需要考虑三种情况,支持Ogg Theora或者VP8(如果这玩意儿没出事的话)的(Opera.Mozilla.C ...

  6. 分享知识-快乐自己:Hibernate 中Criteria Query查询详解

    1):Hibernate 中Criteria Query查询详解 当查询数据时,人们往往需要设置查询条件.在SQL或HQL语句中,查询条件常常放在where子句中. 此外,Hibernate还支持Cr ...

  7. Android零基础入门第80节:Intent 属性详解(下)

    上一期学习了Intent的前三个属性,本期接着学习其余四个属性,以及Android系统常用内置组件的启动. 四.Data和Type属性 Data属性通常用于向Action属性提供操作的数据.Data属 ...

  8. odoo项目结构参数属性详解

    1.基础文件及目录结构 在认识odoo ORM框架前,先介绍一下odoo中模块目录结构.   data:存放模块预制数据i18n:存放国际化文件models:存放模型等py代码security:存放权 ...

  9. Flask request 属性详解

    Flask request 属性详解 一.关于request在Flask的官方文档中是这样介绍request的:对于 Web 应用,与客户端发送给服务器的数据交互至关重要.在 Flask 中由全局的 ...

  10. [转载]java中import作用详解

    [转载]java中import作用详解 来源: https://blog.csdn.net/qq_25665807/article/details/74747868 这篇博客讲的真的很清楚,这个作者很 ...

随机推荐

  1. 如何学习CCIE

    想想自己拖了这么久,也没考试,也没积极去做实验,心里也有怨念,其实一直是方法不对,今天心里产生共鸣,后悔当初太年轻. 转载地址:http://bbs.hh010.com/thread-467553-1 ...

  2. python venv虚拟环境

    1 目的 给python应用一个独立的运行环境,独立于其它的python应用也独立于系统的python环境. 环境升级不影响其它应用. 避免包冲突. 2 创建方式 2.1 pycharm中创建 pro ...

  3. 微软Azure区块链开发工具包三大功能详解

    2018年11月15日,微软宣布了Azure区块链开发工具包,它基于微软的无服务器技术构建,并且利用微软和第三方SaaS,完美集成了区块链.该工具包扩展了微软的区块链开发模板和Azure Blockc ...

  4. react-navigation遇到的坑

    关于goBack返回指定页面 react-navigation是提供了goBack()到指定页面的方法的,那就是在goBack()中添加一个参数,但当你使用goBack('Main')的时候,你会发现 ...

  5. BZOJ 4435 [Cerc2015]Juice Junctions 分治最小割+hash

    分治最小割的题目,要求n2. 之前用的n3的方法自然不能用了. 于是用hash,设hash[i][j]表示在最小割为i的时候,j是否与S联通. 看懂这个需要理解一下最小割树的构造. 这种题建议用EK写 ...

  6. Mac OS访问Windows共享文件夹

    原文地址:http://blog.csdn.net/jinhill/article/details/7246922 最近开始研究Mac OS,遇到的第一个问题就是如何在Mac OS中访问Windows ...

  7. hdu1015 —— 回溯

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1015 因为之前看了下刘汝佳的<算法入门经典>,就用类似打印全排列,八皇后的方法做.本以为不 ...

  8. Spring Boot2.0之自定义参数

    自定义参数,把不同环境的配置放到配置文件中去. 不同环境,如何区分配置文件信息,自定义配置文件信息 比如在 application.properties定义个参数 name=toov5 Spring ...

  9. BZOJ 1600 [Usaco2008 Oct]建造栅栏:dp【前缀和优化】

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1600 题意: 给你一个长度为n的木板,让你把这个木板切割成四段(长度为整数),并且要求这四 ...

  10. EmbarassedBirds全体开发人员落泪

    Github (李昆乘,赖展飞) 现阶段还在开发后期,API调试过程中. 本周无法上线. 全体开发人员留下眼泪. 贴上几个功能图, 给大家尝尝鲜吧! 现阶段仍在API调试 因为队员李昆乘经常出去玩没有 ...