0 0

使用hql查询,为什么一行数据中其中一个字段的值为空,那么返回的list包含的对象就是null!3

使用hql查询,为什么一行数据中其中一个字段的值为空,那么返回的list包含的对象就是null!
先说说我的hibernate配置文件。因为我所操作的表是没有主键的,所以配置文件格式大致如下:
<hibernate-mapping>
    <class name="com.cif.po.custInfo.basic.Cibaseinfo" table="CIBASEINFO">
        <composite-id name="id" class="com.computech.cif.po.custInfo.basic.CibaseinfoId">
            <key-property name="ECustno" type="java.lang.String">
                <column name="E_CUSTNO" length="20" />
            </key-property>
            <key-property name="custno" type="java.lang.String">
                <column name="CUSTNO" length="13" />
            </key-property>
            <key-property name="status" type="java.lang.Long">
                <column name="STATUS" precision="5" scale="0" />
            </key-property>
            <key-property name="custType" type="java.lang.Long">
                <column name="CUST_TYPE" precision="5" scale="0" />
            </key-property>
            <key-property name="name" type="java.lang.String">
                <column name="NAME" length="120" />
            </key-property>

我通过hibernate的Query接口操作hql返回list集合。
String hql = "FROM Cibaseinfo U WHERE 1=1";
List result = query.createQuery(hql);

如果说表里的数据每个字段的值都是饱满的,那么遍历出来的list里面就是Cibaseinfo对象。
如果表里的一行数据其中任何一个(包含一个以上)字段的值为空,那么遍历list之后得到的就是一个null。
请教各位这是什么原因引起的,是不是和我的配置文件无主键这种方式有关,谢谢。
问题补充:
请教lovewhzlq
http://www.iteye.com/problems/15308
可否全部写成可为空的字段?
2009年4月21日 10:04

3个答案 按时间排序 按投票排序

0 0

采纳的答案

你这种配置和代码应该是用myeclipse自动生成的

<composite-id name="id" class="com.computech.cif.po.custInfo.basic.CibaseinfoId">
在composite-id里的key-property必须是非空字段,
因为hibernate查询时是根据composite-id里的key-property来唯一判断查询的

<hibernate-mapping>
    <class name="com.cif.po.custInfo.basic.Cibaseinfo" table="CIBASEINFO">
        //这里面的都为非空字段,
<composite-id name="id" class="com.computech.cif.po.custInfo.basic.CibaseinfoId">
            <key-property name="ECustno" type="java.lang.String">
                <column name="E_CUSTNO" length="20" />
            </key-property>
            <key-property name="custno" type="java.lang.String">
                <column name="CUSTNO" length="13" />
            </key-property>
            <key-property name="status" type="java.lang.Long">
                <column name="STATUS" precision="5" scale="0" />
            </key-property>
        </composite-id>    
//下面的为可空字段
<property name="custType" type="java.lang.Long">
                <column name="CUST_TYPE" precision="5" scale="0" />
            </property>
            <property name="name" type="java.lang.String">
                <column name="NAME" length="120" />
            </property>
</class>




类的代码也要做相应修改才行

Cibaseinfo
CibaseinfoId id
Long custType
String NAME

CibaseinfoId
String ECustno
String custno
Long status

2009年4月21日 10:41
0 0

全部写成可为空的字段那就没办法了吧

2009年4月21日 11:36
0 0

你打开sql显示开关

hibernate.show_sql true

看控制台打印出来的sql语句是怎么样的先

2009年4月21日 10:13

相关推荐

    HQL是hibernate自己的一套查询

    HQL是hibernate自己的一套查询

    hql模糊查询hql模糊查询

    hql模糊查询hql模糊查询hql模糊查询hql模糊查询

    Hibernate HQL查询 分页查询 模糊查询.docx

    Hibernate HQL查询 分页查询 模糊查询.docxHibernate HQL查询 分页查询 模糊查询.docxHibernate HQL查询 分页查询 模糊查询.docxHibernate HQL查询 分页查询 模糊查询.docxHibernate HQL查询 分页查询 模糊查询....

    HiberTest使用HQL动态构建对象

    有时候查询的结果只是需要查询一张表中的一部分数据,而不是所有的数据,比如说,我现在有一个需求是这样的:我只需要user的id和name这两个属性的数据,其他的数据暂时不需要,那么这时候如果按照原来(假设原来user...

    HQL语法大全,并带有详细的例子

    HQL查询依赖于Query类,每个Query实例对应一个查询对象,使用HQL查询按 如下步骤进行: (1)获取Hibernate Session对象; (2)编写HQL语句; (3)以HQL语句作为参数,调用Session的createQuery方法创建查询对象; (4)...

    Hibernate之HQL查询

    HQL查询是一种面向对象的查询语言,其中没有表和字段的概念,只有类、对象和属性的概念,HQL 是应用较为广泛的方式.这是本人对HQL知识点做的一个总结性的练习

    HQL 详解 HQL查询

    因此Hibernate将HQL查询方式立为官方推荐的标准查询方式,HQL查询在涵盖Criteria查询的所有功能的前提下,提供了类似标准SQL语句的查询方式,同时也提供了更加面向对象的封装。完整的HQL语句形势如下

    HQL查询.ppt

    HQL查询 帮助文档

    HQL查询及语法

    HQL查询及语法,java web开发必备。

    hql多表查询

    hql多表查询hql多表查询hql多表查询

    Spring中常用的hql查询方法

    Spring中常用的hql查询方法_(getHibernateTemplate())

    HQL多表查询

    HQL多表查询

    HQL查询语言基础知识

    HQL查询语言基础,HQL查询语言基础,HQL查询语言基础

    Hibernate HQL详解.docx

    HQL通过new的方式可以返回一个新的实体类,比如说上面通过new User(id,name)方式将id,name返回给User,要求User必须包含一个相对应的构造函数,否则会抛出异常,同时我们还有应该给User指定一个默认的构造函数,否则...

    HQL查询语言基础.

    HQL查询语言基础.

    HQL 查询语言基础 一

    HQL 查询语言基础 一

    SSH笔记-HQL查询、QBC、本地SQL查询

    SSH笔记-HQL查询(基于位置参数查询、基于命名参数查询、分页查询、命名查询、投影查询报表查询、内/迫切内/左外/迫切左外连接查询)、QBC(QBC检索查询、统计查询、排序查询、HQL操作数据库)、本地SQL查询

    hibernateHQL关联查询

    Hibernate中的关联查询实际上生成的是数据库表连接查询的SQL语句

    hql语句 使用大全

    hql语句常规 方法 使用 了解hql语句

    hibernate查询之HQLhibernate查询之HQL

    hibernate查询之HQLhibernate查询之HQLhibernate查询之HQL

Global site tag (gtag.js) - Google Analytics