Mark,在使用hibernate处理视图的时候。因为视图没有主键,这个用Myeclipse自动生成的POJO类就有两个。一个类名.java,一个是类名Id.java,而映射文件只有一个。因此造成一个问题是,只要视图中有一个字段有一个为NULL,你查出来的数据就会为NULL。

解决办法:

只要把hibernate逆向生成的文件修改一下即可,直接把视图当成数据库表使用,当然视图是不能插入数据的。

如:

反向生成的xml文件:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.aircondition.store.pojo.VStockchanpin" table="v_stockchanpin" catalog="aircondition">
<composite-id name="id" class="com.aircondition.store.pojo.VStockchanpinId">
<key-property name="id" type="java.lang.String">
<column name="id" length="50" />
</key-property>
<key-property name="spid" type="java.lang.String">
<column name="spid" length="50" />
</key-property>
<key-property name="spmc" type="java.lang.String">
<column name="spmc" length="100" />
</key-property>
<key-property name="spsl" type="java.lang.Integer">
<column name="spsl" />
</key-property>
<key-property name="ggxh" type="java.lang.String">
<column name="ggxh" length="100" />
</key-property>
<key-property name="spdm" type="java.lang.String">
<column name="spdm" length="100" />
</key-property>
<key-property name="xgr" type="java.lang.String">
<column name="xgr" length="50" />
</key-property>
<key-property name="sfsc" type="java.lang.String">
<column name="sfsc" length="10" />
</key-property>
<key-property name="xgsj" type="java.util.Date">
<column name="xgsj" length="10" />
</key-property>
</composite-id>
</class>
</hibernate-mapping>

修改成(把复合主键改成主键,把key-property属性改成property属性):

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.aircondition.store.pojo.VStockchanpin" table="v_stockchanpin" catalog="aircondition">
<id name="id" type="java.lang.String">
<column name="id"></column>
<generator class="guid"></generator>
</id>
<property name="spid" type="java.lang.String">
<column name="spid" length="50" />
</property>
<property name="spmc" type="java.lang.String">
<column name="spmc" length="100" />
</property>
<property name="spsl" type="java.lang.Integer">
<column name="spsl" />
</property>
<property name="ggxh" type="java.lang.String">
<column name="ggxh" length="100" />
</property>
<property name="spdm" type="java.lang.String">
<column name="spdm" length="100" />
</property>
<property name="xgr" type="java.lang.String">
<column name="xgr" length="50" />
</property>
<property name="sfsc" type="java.lang.String">
<column name="sfsc" length="10" />
</property>
<property name="xgsj" type="java.util.Date">
<column name="xgsj" length="10" />
</property>
</class>
</hibernate-mapping>

相应的pojo也修改一下,直接把XXX.java删除,把带XXXId.java改成XXX.java即可。override的equal方法和hashcode方法,也可删除。

hibernate处理视图问题(记录)的更多相关文章

  1. 跟大牛之间关于hibernate的一些探讨记录

    hibernate的工作原理!! 1.读取配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Session 4.创建事务Transcation 5.持久化操作 6.提交事务 ...

  2. hibernate mysql视图操作

    hibernate对视图操作,首先建立数据库视图 视图v_invite: create view pintu.v_invite asselect cp.user_id as be_user_id,ca ...

  3. Hibernate 使用log4j日志记录

    日志记录使程序员能够将日志详细信息永久写入文件.这是我们以后在开发当中非常重要的一步. Hibernate使用log4j日志记录,我们需要以下几个步骤: 1.导入jar包: (1)这是hibernat ...

  4. Hibernate使用Log4j日志记录(使用properties文件)

    我们知道,Log4j和Logback框架可用于支持日志记录hibernate,使用log4j有两种执行日志记录的方法: 通过log4j.xml文件(或) 通过log4j.properties文件 在这 ...

  5. Hibernate使用Log4j日志记录(使用xml文件)

    日志记录使程序员能够将日志详细信息永久写入文件. Log4j和Logback框架可以在hibernate框架中使用来支持日志记录. 使用log4j执行日志记录有两种方法: 通过log4j.xml文件( ...

  6. NetFlow是一种数据交换方式,提供网络流量的会话级视图,记录下每个TCP/IP事务的信息

    NetFlow是一种数据交换方式,提供网络流量的会话级视图,记录下每个TCP/IP事务的信息.也许它不能象tcpdump那样提供网络流量的完整记录,但是当汇集起来时,它更加易于管理和易读.Netflo ...

  7. odoo-开发笔记 列表视图 增加记录弹出窗口效果

    editable="bottom" 增加该标签的效果是,添加记录的时候,在原列表视图上一行一行添加; 去掉该标签之后,那么增加新记录的时候,会以弹出窗口的方式实现. 如果弹出的窗口 ...

  8. Hibernate查询视图返回null问题说明及解决办法

    在Hibernate中对含有主键的单表操作比较简单,直接使用Hibernate针对数据库表对象进行反向生成代码,直接调用就可以了.但是在实际项目当中,经常会用到不少的多表联合查询操作,网上有很多示例, ...

  9. JAVA spring hibernate 多数据源配置记录

    数据源配置 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http:// ...

随机推荐

  1. android CVE 漏洞汇总

    arm exploits 技术教程: Learning Pentesting for Android Devices CVE-2015-1530 ,CVE-2015-1474 两个android整数溢 ...

  2. Linux 入门记录:九、Linux 文件系统挂载管理

    一.挂载操作 磁盘或分区创建好文件系统后,需要挂载到一个目录才能够使用. Windows 或 Mac 系统会进行自动挂载,一旦创建好文件系统后会自动挂载到系统上,Windows 上称之为 C 盘.D ...

  3. java的应用项目

    elk是一个不错的日志分析系统 mycat  是一不错的mysql中间件,可以做一个横向的分库分表模型,在无感知的时候,增加分库分表. apache ant 是一个java项目发布工具 springb ...

  4. 2017多校第9场 HDU 6166 Senior Pan 堆优化Dij

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6166 题意:给你一个有向图,然后给你k个点,求其中一个点到另一个点的距离的最小值. 解法:枚举二进制位 ...

  5. 相册框架之AssetsLibrary

    看到项目中用到AssetsLibrary这个框架, 所以研究了一下 其实很简单 - (void)getAlbumPhoto { NSString *tipTextWhenNoPhotosAuthori ...

  6. node.js3

    第一部分:express(MVC) 1.下载express npm install express --save 2.引入express require('express') 中间件 body-par ...

  7. Struts2学习笔记02 之 使用

    一.页面向Action传参 1.基本属性注入,页面命名name,action提供成员变量name并提供set方法. 2.域模型注入:页面用user.name对象点属性形式.action成员user对象 ...

  8. Elasticsearch( 插件开发)

    elasticsearch5.2.2 插件开发(一) Scripting plugins:这个插件本质来说,就是会调用用户的脚本,所以可以执行任何的程序,举例的话,可以通过这个插件,支持javascr ...

  9. [BZOJ5305][Haoi2018]苹果树 组合数

    题目描述 小 C 在自己家的花园里种了一棵苹果树, 树上每个结点都有恰好两个分支. 经过细心的观察, 小 C 发现每一天这棵树都会生长出一个新的结点. 第一天的时候, 果树会长出一个根结点, 以后每一 ...

  10. 熟悉并了解uml的使用(一)

    本资料对UML各种模型图的构成和功能进行说明,通过本资料的学习达到可以读懂UML模型图的目的.本资料不涉及模型图作成的要点等相关知识. UML简介 UML (Unified Modeling Lang ...