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. Java垃圾收集算法

    算法名称 过程 优缺点 1. 标记-清除算法 (Mark-Sweep) 分为两个阶段: 1.首先标记出所有需要回收的对象: 2.在标记完成后统一回收所有被标记的对象. 缺点: 1.效率问题:标记和清除 ...

  2. 写个dump_stack【转】

    转自:http://blog.chinaunix.net/uid-27714502-id-3434761.html 简单实现dump_stack 0.首先确保你能写个内核模块:打印"hell ...

  3. nginx学习时使用EditPuls编辑conf.xml

    一.Nginx简介:是一个使用c语言开发的高性能的http服务器及反向代理服务器 二.由于在linux环境中使用vim修改配置文件相对困难.为此,我们可以借助EditPlus将虚拟机上面的目录引用到E ...

  4. PHP的输出方式

    php中,用echo输出一个字符串有三种方式,分别是单引号,双引号和<<<方式.其中,单引号中的变量不会被解析,而会直接输出,而双引号和<<<时,变量会被解析.&l ...

  5. 一个大div里面包裹一个小div,里面的小div的点击事件不触发外面的这个大div的点击事件

    一开始上html代码 <div id="div1" style="background: blue;width: 100px; height: 100px;&quo ...

  6. 760. Find Anagram Mappings

    Given two lists Aand B, and B is an anagram of A. B is an anagram of A means B is made by randomizin ...

  7. hdu多校4

    Problem L. Graph Theory Homework 思路:很容易想到一步从 1 走到 n 最优. #include<bits/stdc++.h> #define LL lon ...

  8. 微软企业库5.0 学习之路——第四步、使用缓存提高网站的性能(EntLib Caching)

    首先先补习下企业库的Caching Application Block的相关知识: 1.四大缓存方式,在Caching Application Block中,主要提供以下四种保存缓存数据的途径,分别是 ...

  9. nginx gzip压缩

    gzip压缩作用:将响应报⽂发送⾄客户端之前可以启⽤压缩功能,这能够有效地节约带宽,并提⾼响应⾄客户端的速度,压缩会消耗nginx的cpu性能 gzip压缩可以配置http,server和locati ...

  10. KMS使用CLion作为IDE来调试

    KMS使用CLion作为IDE来调试,打开kms相应模块的目录,CLion自动识别相应的CMakeLists.txt. 然而会make失败,经搜索,看到Clion使用的自带的cmake,因此系统中安装 ...