`
promzaid
  • 浏览: 3005 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

关于hibernate映射视图若干问题小结(转)

 
阅读更多
使用MyEclipse hibernate 视图对ORACLE的视图进行映射反向生成,比如对ViewResult视图会生成两个类,一个hbm.xml文件,其中两个类名为:ViewResultId和ViewResult  配置文件为ViewResult.hbm.xml。那么使用HibernateTemplate模板类使用find(hql)进行查询的时候,比如hql="from ViewResult v where v.name='lx'";那么会出现第一个异常(异常内容明天补上。。。)原因是:视图没有主键,MyEclipse默认生成的是复合主键,即<composite-id><key-property></key-property></composite-id>。id由ViewResult类生成,于是将hql修改为:hql="from ViewResult v where v.id.name='lx'";发现可以进行查询不会报错了,但是却又发现查询的内容为null,这是第二个异常,原因为:MyEclipse默认生成的复合主键,<composite=id></composite-id>中间包括了视图所有的属性都为复合主键即<key-property>属性</key-property>,因为查询的记录里面某个字段为null,而主键不能为空,所以导致查询的记录全部都null,修改方法为:将视图中可以作为主键的属性放入<composite-id></composite-id>中,其余的放在外面修改为<property/>,这个时候查询又会出现,缺少get或者set方法的异常,所以最终的解决方法就是:把视图当成一个表,按hibernate常规思路进行配置即可解决,配置主键生成策略(视图没有主键,但是你可以根据业务需求找出一个可以当做主键的属性值),然后配置属性,这样就可以把视图当成一个实体用hql来查询了。
ps:HibernateTemplate模板没有提供分页的查询,只提供了setMaxResults(int)方法设置每页显示记录数,但是没有提供setFirstResult(int)设置从哪一行开始查询,所以使用了doInhibernate(HibernateCallback)进行接口回调直接使用session进行设置查询。当出现上述问题时候还以为是session关闭,使用了opensessionview过滤 但仍然报错,最后还是映射问题。
分享到:
评论

相关推荐

    自动生成hibernate映射文件和实体类

    "自动生成 Hibernate 映射文件和实体类" 自动生成 Hibernate 映射文件和实体类是使用 MyEclipse 工具来实现的,这可以大大提高开发效率,减少开发时间。下面将详细介绍如何使用 MyEclipse 自动生成 Hibernate 映射...

    J2EE企业级项目开发-1期 06 hibernate映射视图的使用经验.doc

    本篇文档主要讨论了如何在Hibernate中使用映射视图来处理这种情况,特别是在面对无法直接使用原生SQL(native SQL)的情况下。 Hibernate是一个强大的Java对象关系映射(ORM)框架,它允许开发者将数据库操作转化为...

    Hibernate的视图功能

    Hibernate的视图功能 网上找的 , 自己实验过,能用

    myeclipse自动生成hibernate映射文件

    开发者可以通过这个视图连接到各种数据库,查看、创建、修改表等,同时,它也是生成Hibernate映射文件的关键工具。 3. **生成Hibernate映射文件的步骤**: - 首先,需要在MyEclipse中创建一个新的Web项目,例如`...

    Hibernate映射

    hibernate 映射关系 小结

    Myeclipse生成Hibernate映射文件

    在IT行业中,开发Java应用程序时,常常需要使用到ORM(对象关系映射)框架,比如Hibernate,它能够帮助我们把数据库中的数据与Java对象进行映射,从而简化数据操作。而MyEclipse作为一款强大的Java集成开发环境,...

    Hibernate 注解映射

    Hibernate 注解映射 Hibernate 注解映射是 Hibernate 框架中的一种映射方式,它使用 Java 注解来描述实体类和数据库表之间的映射关系,提高开发效率。 一、 环境搭建和基本映射 在使用 Hibernate 注解映射之前,...

    hibernate关联映射详解

    hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,包含4个说明文档,分别详细解说了hibernate关联映射的...

    java根据实体类生成Hibernate映射文件

    在Java开发中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者使用面向对象的方式来操作数据库,而无需关心底层SQL语句。映射文件是Hibernate中的关键元素,它定义了Java实体类与数据库表之间的...

    hibernate 视图

    在Hibernate中,我们可以利用Hibernate的映射机制来处理视图,将其作为实体进行操作。 **视图的作用** 1. **数据安全**:视图可以限制用户对原始表的访问权限,只允许他们看到和修改特定的数据集。 2. **数据聚合**...

    build.xml 手写自动生成Hibernate映射文件和配置文件源代码

    build.xml 手写自动生成Hibernate映射文件和配置文件源代码

    用MyEclipse自动生成hibernate映射文件和实体类

    在使用Hibernate框架进行对象关系映射(ORM)时,MyEclipse提供了自动生成映射文件和实体类的功能,极大地简化了数据库与Java类之间的绑定工作。以下是详细步骤和相关知识点: 1. **DB Browser视图**:在MyEclipse...

    hibernate映射文件生成数据库

    在Java开发领域,Hibernate是一个非常流行的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式处理数据库操作。本文将深入探讨如何利用Hibernate的映射文件来生成数据库,以此提高开发效率并减少手动创建...

    hibernate关联映射实例

    在Java企业级开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它极大地简化了数据库操作。本文将深入探讨“hibernate关联映射实例”中的关键知识点,包括一对多、多对多和继承映射,这些都是Hibernate中...

    Hibernate 实体映射实例

    注:为节省空间,程序中需要的jar包,均在HibernateManytoManyMapCascadingSave.zip\HibernateManytoManyMapCascadingSave\lib\ &lt;br&gt;Hibernate 多对多实体映射实例 &lt;br&gt;学习Hibernate 实体映射的映射的好帮手...

    MyEclipse自动生成hibernate映射文件

    ### MyEclipse自动生成Hibernate映射文件 #### 一、概述 在开发基于Java的Web应用时,ORM(对象关系映射)框架如Hibernate能够极大地提高数据持久化的效率及便捷性。MyEclipse是一款功能强大的集成开发环境,支持...

    hibernate映射心得 原创

    这是一个文档文件,很可能是作者详细记录的关于Hibernate映射的学习笔记或教程,包含了作者在学习和应用Hibernate映射过程中的思考、问题解决步骤以及实用示例。 **综合知识点:** 1. **Hibernate ORM基础**:介绍...

    myeclipse自动生成hibernate映射文件.

    在Java开发中,MyEclipse是一款强大的...然而,需要注意的是,虽然自动化工具提供了便利,但理解和掌握Hibernate的基本原理和映射机制仍然是至关重要的,因为这有助于更好地优化和维护项目,以及解决可能出现的问题。

    hibernate 主键一对一映射(单向) 实例(java类)

    在Java的持久化框架Hibernate中,一对一(One-to-One)映射是一种常见的关系映射方式,它用于表示两个实体之间一对一的关联关系。在这种关系中,一个实体对应另一个实体的唯一实例。本实例将深入探讨如何在Hibernate...

Global site tag (gtag.js) - Google Analytics