`
jihongbin12329
  • 浏览: 40203 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
最近访客 更多访客>>
社区版块
存档分类
最新评论

关于HIBERNATE 的CreateSQLQuery的用法

阅读更多

终于搞点了CREATESQLQUERY了

CREATESQLQUERY最好用原生的SQL

Query qu =session.createSQLQuery("select user_account.NID, user_archive.* from user_account  left outer join user_archive on  user_account.NID = user_archive.NUSER_ID where   user_account.NID = "+userId);

以上都是表名同列名  没有对应的类同属性

如果一定要用对应的类同属性名是记的要给别名还有就是用了别名一定要给这个别名下定义如

Query qu =session.createSQLQuery("select   NID, {b.*} from user_account  , user_archive {b}  where NID = {b}.NUSER_ID and NID = "+userId).addEntity("b", UserArchive.class).addScalar("NID",new LongType());

以上的除了表名外还有的是属性名记的用别名引用属性名是一定要用addEntity("b", UserArchive.class)不然会出错:好像172202错吧说别名不识别

CREATESQLQUERY中可以直接进行多表操作不用在配置中配置MANYTOONE  OR ONETOONE  OR   MANYTOMANY 如:

Query qu =session.createSQLQuery("select NID , {b.*} from user_account left outer join user_archive {b} on  NID = {b}.NUSER_ID where NID = "+userId).addEntity("b", UserArchive.class).addScalar("NID",new LongType());

Query qu =session.createSQLQuery("select user_account.NID, user_archive.* from user_account  left outer join user_archive on  user_account.NID = user_archive.NUSER_ID where   user_account.NID = "+userId);

对于投影查询使用别名的情况要注意了如果你的addEntity()方法加了而只SELECT 一些属性时会出以下错误码:


Hibernate: select   NID NID0_1_, b.NUSER_ID as NUSER1_1_0_, b.SNAME as SNAME1_0_, b.SNAME_EN as SNAME3_1_0_, b.SSEX as SSEX1_0_, b.DBIRTH as DBIRTH1_0_, b.SMARRIAGE as SMARRIAGE1_0_, b.NSTATURE as NSTATURE1_0_, b.NAVOIRDUPOIS as NAVOIRDU8_1_0_, b.SCONSTELLATION as SCONSTEL9_1_0_, b.SBLOOD as SBLOOD1_0_, b.SGENUS as SGENUS1_0_, b.SMAXIM as SMAXIM1_0_, b.SCHARACTER as SCHARACTER1_0_, b.SINTEREST as SINTEREST1_0_, b.SCOUNTRY_CODE as SCOUNTRY15_1_0_, b.SAUTOCRITICAL as SAUTOCR16_1_0_, b.NHOMETOWN_CITY_ID as NHOMETOWN17_1_0_, b.NCITY_ID as NCITY18_1_0_, b.SKNOWLEDGE as SKNOWLEDGE1_0_, b.SACADEMY as SACADEMY1_0_, b.SOCCUPATION as SOCCUPA21_1_0_, b.SMONTH_SALARY as SMONTH22_1_0_, b.SEMAIL as SEMAIL1_0_, b.SQQ as SQQ1_0_, b.SMSN as SMSN1_0_, b.SISOPEN_NET_CONTACT as SISOPEN26_1_0_, b.SISOPEN_BASIC_CONTACT as SISOPEN27_1_0_, b.STEL as STEL1_0_, b.SMOBILE as SMOBILE1_0_, b.SADDRESS as SADDRESS1_0_, b.SZIPCODE as SZIPCODE1_0_, b.SPHOTO_URL as SPHOTO32_1_0_ from user_account a  , user_archive b  where NID = b.NUSER_ID and NID = 15000
- could not read column value from result set: SNICK2_0_1_; 列名无效

ADDENTITY方法照我看是别名的引用同返回对像的说明也就是说用了别名一定要有ADDENTITY但有了ADDENTITY一定会返回整个对像你只SELECT对像中的几个属性就会出错了

分享到:
评论

相关推荐

    hibernate 的createSQLQuery的几种用法

    Hibernate 的 createSQLQuery 的几种用法 Hibernate 的 createSQLQuery 是 Hibernate 框架中的一种强大且灵活的查询机制,它允许开发者使用原生 SQL 语句来查询数据库。下面是 createSQLQuery 的几种常见用法: 一...

    关于hibernate 的createQuery和createSqlQuery 的区别

    在 Hibernate 中,createQuery 和 createSqlQuery 是两个常用的查询方法,但是它们之间存在着一些关键的区别。了解这两个方法的差异对于正确地使用 Hibernate 进行数据库操作至关重要。 createQuery 方法 ...

    hibernate query调用oracle存储过程

    在Hibernate中,调用存储过程通常通过Session对象的createNativeQuery()方法实现,这个方法用于创建原生SQL查询,可以方便地调用数据库的自定义SQL或者存储过程。以下是一个简单的示例,展示了如何调用一个不带参数...

    HibernateDemo(hibernate基本用法演示)

    - **读取(Read)**:通过 `get()` 或 `load()` 获取单个实体,`createQuery()` 或 `createSQLQuery()` 执行 HQL(Hibernate 查询语言)或 SQL 查询获取多个实体。 - **更新(Update)**:修改实体后调用 `update...

    hibernate 数据库操作方法

    Hibernate是Java领域中一款强大的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式来操作数据库,极大地简化了数据库操作。在Java应用中,尤其是Spring框架与Hibernate结合使用时,能够实现更高效的业务...

    hibernate执行原生sql语句

    Hibernate 提供了多种方式来执行原生 SQL 语句,其中之一是使用 `Session.createSQLQuery()` 方法,该方法返回一个 `SQLQuery` 对象,该对象提供了执行原生 SQL 语句的方法。 例如,我们可以使用以下代码来执行一个...

    Hibernate连表查询 Hibernate连表查询

    例如,在`findAllbyString`方法中,使用了`getSession().createSQLQuery`方法来执行原生SQL查询: ```java String queryString = "Select * from h_attribute t where ciid=24 and Isinstance=1 and Isdisplay=1"; ...

    hibernate特殊用法

    4. **批量更新/删除**:使用`createSQLQuery`方法执行原生SQL语句进行批量操作。 5. **二级缓存**:通过配置文件或注解启用二级缓存,提高数据访问效率。 #### 六、总结 通过本文对给定代码片段的解析,我们了解到...

    hibernate的一个简单例程

    **描述:** 本教程旨在提供一个关于Hibernate框架的简明教程,包括其搭建过程及基本使用方法。通过学习,读者将能够理解Hibernate的核心概念,并能动手实现在Java应用程序中集成和运用Hibernate进行数据持久化。 **...

    Hibernate执行持久层访问步骤

    3. SQL查询:对于更复杂的查询需求,可以使用Session的createSQLQuery()方法,直接编写SQL语句。 七、事务提交与关闭 1. 提交事务:所有操作完成后,调用Transaction的commit()方法提交事务,确保数据的持久化。 2....

    hibernate实现动态SQL查询

    本文主要讨论使用XML配置和FREEMARKER的方法。 四、XML配置SQL 在Hibernate中,我们可以创建自定义的SQL查询语句并将其配置在映射文件(.hbm.xml)中。这些自定义SQL可以在需要时动态调用,从而实现动态查询。例如...

    Hibernate查询解决方案

    本文详细介绍了 Hibernate 提供的各种查询方式,包括 `load`、`get`、`createQuery` 和 `find` 等方法,并重点阐述了 HQL 查询的基本用法和高级技巧。通过本文的学习,读者可以掌握 Hibernate 的基本查询操作,并能...

    Hibernate-nosession

    但是,为了实现nosession模式,我们可以使用SessionFactory的createSQLQuery()方法来执行原生的SQL查询,这样就无需打开和关闭Session。以下是一个简单的示例: ```java SessionFactory sessionFactory = ...

    hibernate多表联合查询

    - 使用`createSQLQuery()`方法来创建一个SQL查询对象。 - 通过`addEntity()`方法将查询结果映射到自定义的`CustomerSummary`类。 #### 六、总结 通过以上两种方式,我们不仅能够灵活地进行多表联合查询,还可以有效...

    hibernate code.rar

    在这个“hibernate code.rar”压缩包中,我们很可能会找到关于Hibernate的视频教程——"hibernate介绍与动手入门体验.avi",这个资源将引导我们深入了解Hibernate的核心概念和实际应用。 首先,让我们谈谈Hibernate...

    Hibernate中Sql语句

    ### Hibernate中使用SQL而非HQL语句的知识点详解 在Java开发中,Hibernate作为一个非常流行的ORM框架,提供了多种查询方式,其中就包括了HQL(Hibernate Query Language)和原生SQL查询。本文将针对给定代码片段中...

    Hibernate简单的demo

    3. `Query`: `Session`的`createQuery()`方法用于构建HQL(Hibernate Query Language)查询,或者`createSQLQuery()`方法用于构建原生SQL查询。 4. `Criteria API**: 另一种查询方式,提供更面向对象的查询,避免硬...

    hibernate将本地SQL查询结果封装成对象

    然后,我们可以使用`Session.createSQLQuery()`方法创建一个本地SQL查询对象,并设置查询语句: ```java Session session = sessionFactory.openSession(); String sql = "SELECT * FROM my_table WHERE ..."; SQL...

    hibernate动态数据库进化版

    例如,使用`org.hibernate.boot.model.naming.PhysicalNamingStrategy`接口来自定义表名生成策略,或者利用`Session.createSQLQuery()`方法直接执行原生SQL。 2. **多数据库支持**:为了适应不同的数据库,如MySQL...

Global site tag (gtag.js) - Google Analytics