`
Roader123
  • 浏览: 94173 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

hibernate query.list() null

 
阅读更多
Public class Parent{

        private List child1;

/**
* @hibernate.list inverse="true" lazy="false" cascade="all"
* @hibernate.collection-index column="ID"
* @hibernate.collection-one-to-many
* class="com.test.po.Child"
* @hibernate.collection-key column="parentId"
*/
public List getChild1() {
return child1;
}
public void setChild1(List child1) {
child1= child1;
}
}
Parent.hbm.xml
        <list
            name="leg"
            lazy="false"
            inverse="true"
            cascade="all"
        >

            <key
                column="ParentId"
            >
            </key>

            <index
                column="ID"
            />

            <one-to-many
                  class="com.test.po.Child"
            />

        </list>

但用hibernate查询Parent,从而级联查询出child的时,child的数量却比数据库的实际数据多,多的child,都是null。

Query qry = session.createQuery(" From Parent p Where p.id = 1  order by id");//id为Long型

List list = qry.list();
debug的时候,list下的Parent 下的child,数据库实际对应是2条记录,但child在parent中对应的那个list.size()却是3,且第一个就是null,第二三个才是数据库的记录。后经反复测试发现,parent中childList的size()跟child表的id有关,child表的id也是Long,主键策略是native的,childList的size()总是max(child.id)+1,去掉数据库实际的数据条数,其余的都是null。
hibernate3.jar是3.2.1ga 的.数据库是Oracle10g,parent和child表都无sequence。后该主键生成策略为sequence后,也给parent和child建立相应的sequence后,问题依然如此。

不胜感谢
分享到:
评论

相关推荐

    Hibernate中的query 分页.doc

    本文将探讨Hibernate中两种主要的分页方式:`query.scroll()`和使用`query.setFirstResult(), query.setMaxResults()`。 首先,`query.scroll()`方法基于JDBC 2.0的可滚动结果集实现。这种方式允许应用程序在结果...

    Hibernate3.x总结

    public List&lt;Person&gt; queryAll() { String hql = "FROM Person as p"; Query q = this.session.createQuery(hql); return q.list(); } ``` - **模糊查询**:使用 HQL 进行模糊查询。 - **示例代码**: ```...

    Hibernate框架.pdf

    list = query.list(); System.out.println("查询所有记录:"); this.session.close(); return list; } ``` - **主键查询**: ```java public Login queryById(String name) { Login login = null; String...

    Hibernate教程.ppt

    Hibernate提供了多种检索数据的方法,包括HQL(Hibernate Query Language)、 Criteria API 和 SQL查询。例如,使用HQL获取所有客户: ```java List&lt;Customer&gt; customers = session.createQuery("from Customer")....

    hibernate数据库通用SQL代码

    List list = query.list(); HibernateSessionFactory.clossSession(); return (ArrayList) list; } ``` - 基于原生SQL的通用查询: 对于更复杂的SQL操作,可能需要使用原生的SQL语句。这个方法接收一个SQL字符串...

    hibernate-release-5.0.7.Final.zip官方

    &lt;property name="hibernate.cache.use_query_cache"&gt;true &lt;property name="hibernate.ejb.entitymanager_factory_name"&gt;hibernateSessionFactory ``` 同时,在实体类中使用 @Type 注解指定自定义类型: ```java @...

    1、hibernate 简单语法1

    List&lt;Student&gt; list = query.list(); ``` 这将查询所有的 Student 对象。 参数绑定 Hibernate 提供了两种参数绑定的方式:?和命名参数。 ? 我们可以使用问号(?)作为参数的占位符,然后使用 `set` 方法将...

    六种方式实现hibernate查询

    List&lt;Admin&gt; list=query.list(); for(Admin admin:list){ System.out.println(admin.getAname()); } }finally{ if(s!=null) s.close(); } } ``` 适用情况:常用方法,比较传统,类似jdbc。缺点:新的查询...

    Hibernate笔记总结

    Query q = session.createQuery(hql); q.setString(0, "%" + name + "%"); return q.list(); } ``` 4. **登录验证**: - 实现登录验证可以通过查询用户是否存在来完成。 ```java public UserInfo ...

    hibernate.txt

    list = query.list(); // ... } ``` 这里使用了 HQL 查询所有 `Stuinfo` 对象。`"from Stuinfo"` 表示查询 `Stuinfo` 表中的所有记录。`createQuery` 方法接受 HQL 字符串,并返回一个 `Query` 对象,然后调用 `...

    hibernate语句大全

    List&lt;Customer&gt; customers = query.list(); ``` ##### 4. QBC方式(Query By Criteria) - **定义**:QBC是Hibernate提供的另一种查询方式,基于标准的Java API,提供了更多的灵活性。 - **应用场景**:构建复杂...

    hibernate4增删查改以及配置

    List&lt;Person&gt; allPersons = query.list(); ``` - **模糊查询**:使用 `LIKE` 关键字进行模糊匹配。 ```java String hql = "FROM Person WHERE name LIKE ?"; Query query = session.createQuery(hql); query....

    hibernate list集合映射

    4. **查询和遍历**:使用HQL(Hibernate Query Language)或Criteria API来查询List集合,然后遍历结果。 **四、性能优化** 1. **缓存策略**:利用Hibernate的第一级缓存和第二级缓存,减少对数据库的频繁访问。 ...

    Hibernate连接数据库的注册的项目

    List&lt;User&gt; users = query.getResultList(); ``` 此外,事务管理在使用Hibernate时至关重要。上述代码中,我们使用了`Transaction`对象来包裹数据库操作,确保了操作的原子性。在大型项目中,这通常会与Spring框架...

    Hibernate几种获数据方法比较

    本文将深入探讨Hibernate中的几种主要的数据获取方式,包括`Session.get()`与`Session.load()`、`Query.iterator()`与`Query.list()`以及使用HQL(Hibernate Query Language)进行查询。 ### 1. `Session.get()`与`...

    hibernate实现分页查询

    List result = query.list(); ``` 完整的分页查询方法实现如下: ```java public List getPageList(int thisNumber, int sumCount, String sql) { Session session = sf.openSession(); try { Query query = ...

    hibernate执行原生sql语句

    List&lt;Cat&gt; cats = query.addEntity(Cat.class).list(); ``` 在上面的代码中,我们使用 `Session.createSQLQuery()` 方法创建了一个 `SQLQuery` 对象,然后使用 `addEntity()` 方法指定了查询结果的实体类型,最后...

    Hibernate问题解决

    List&lt;UserInfo&gt; userList = query.list(); ``` 上面的代码中,`LEFT JOIN FETCH`用于获取`user`表的信息及其对应的`role`信息,其中`WHERE`子句指定了`role`表的`description`字段值。 #### 3. Hibernate批量...

    hibernate通用查询

    2. HQL(Hibernate Query Language):这是一种面向对象的查询语言,类似于SQL,但更贴近于Java对象。HQL可以方便地进行对象间的关联查询,支持聚合函数和子查询。 3. Query API:这是基于HQL的查询接口,提供了...

    Hibernate查询解决方案

    Hibernate 的核心功能之一是提供了一套强大的查询接口和方法,包括基于对象的查询、SQL 查询和 HQL (Hibernate Query Language) 查询等。本文将详细介绍 Hibernate 提供的几种查询方式及其应用场景。 #### 二、重要...

Global site tag (gtag.js) - Google Analytics