hibernate处理视图问题(记录)
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处理视图问题(记录)的更多相关文章
- 跟大牛之间关于hibernate的一些探讨记录
hibernate的工作原理!! 1.读取配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Session 4.创建事务Transcation 5.持久化操作 6.提交事务 ...
- hibernate mysql视图操作
hibernate对视图操作,首先建立数据库视图 视图v_invite: create view pintu.v_invite asselect cp.user_id as be_user_id,ca ...
- Hibernate 使用log4j日志记录
日志记录使程序员能够将日志详细信息永久写入文件.这是我们以后在开发当中非常重要的一步. Hibernate使用log4j日志记录,我们需要以下几个步骤: 1.导入jar包: (1)这是hibernat ...
- Hibernate使用Log4j日志记录(使用properties文件)
我们知道,Log4j和Logback框架可用于支持日志记录hibernate,使用log4j有两种执行日志记录的方法: 通过log4j.xml文件(或) 通过log4j.properties文件 在这 ...
- Hibernate使用Log4j日志记录(使用xml文件)
日志记录使程序员能够将日志详细信息永久写入文件. Log4j和Logback框架可以在hibernate框架中使用来支持日志记录. 使用log4j执行日志记录有两种方法: 通过log4j.xml文件( ...
- NetFlow是一种数据交换方式,提供网络流量的会话级视图,记录下每个TCP/IP事务的信息
NetFlow是一种数据交换方式,提供网络流量的会话级视图,记录下每个TCP/IP事务的信息.也许它不能象tcpdump那样提供网络流量的完整记录,但是当汇集起来时,它更加易于管理和易读.Netflo ...
- odoo-开发笔记 列表视图 增加记录弹出窗口效果
editable="bottom" 增加该标签的效果是,添加记录的时候,在原列表视图上一行一行添加; 去掉该标签之后,那么增加新记录的时候,会以弹出窗口的方式实现. 如果弹出的窗口 ...
- Hibernate查询视图返回null问题说明及解决办法
在Hibernate中对含有主键的单表操作比较简单,直接使用Hibernate针对数据库表对象进行反向生成代码,直接调用就可以了.但是在实际项目当中,经常会用到不少的多表联合查询操作,网上有很多示例, ...
- JAVA spring hibernate 多数据源配置记录
数据源配置 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http:// ...
随机推荐
- WmiPrvSE.exe进程(WMI Provider Host)不能删除
WmiPrvSE.exe进程基本信息:程序厂商:微软® Microsoft Corp.进程描述:WMI Provider Host进程属性:Windows系统进程使用网络:是的启动情况:触发启动 来历 ...
- 网络知识===关于MAC地址和IP不能互相替代,缺一不可的原因
最近在看书<图解TCP/IP>书中分别谈到了IP和MAC地址.于是我就有两个疑惑, 为什么有了IP地址,我们还要获取MAC地址? 为什么我们初始不直接使用MAC地址作为终点地址?还要那么复 ...
- javascript反混淆之packed混淆
function getKey() { var aaaafun = function(p, a, c, k, e, d) { e = function(c) { return (c < a ? ...
- OC 06 Block、数组高级
主要内容: ⼀.Block语法 ⼆.Block使⽤ 三.Block实现数组排序 Block简介 Block:块语法,本质上是匿名函数(没有名称的函数) 标准C⾥面没有Block,C语⾔言的后期扩展版本 ...
- 利用eclipse调试ofbiz之debug使用
1.项目右键-配置debug 2.new一个debug调试 3.配置运行类org.ofbiz.base.start.Start 4.设置内存大小:arguments-VM arguments -Xms ...
- HTML5 一篇就够的中文教程
HTML5 是近十年来 Web 开发标准最巨大的飞跃.HTML5 并非仅仅用来表示 Web 内容,它将 Web 带入一个成熟的应用平台,在 HTML5 平台上,视频.音频.图象.动画,以及同电脑的交互 ...
- MyEclipse部署项目报"Add Deployment". Invalid Subscription Level - Discontinuing this MyEclipse
"Add Deployment". Invalid Subscription Level - Discontinuing this MyEclipse 猜测应该是MyEclipse ...
- apache的扩展模块安装
/* 当需要用到Apache的扩展模块时, 就要用到了apache的扩展工具 apxs */ #在使用这个功能之前,请先确认是否已经加载了 mod_so 模块,方法是: [root@localhost ...
- Webstorm和Eclipse常用快捷键
快捷键配置 点击“File”-> “settings” Webstorm预置了其他编辑器的快捷键配置,可以点击 默认配置-Eclipse的常用快捷键对照表 查找/代替 Webstorm快捷键 E ...
- jmeter压力测试案例实战
1. 测试目标地址:http://www.cnblogs.com/ 2. 1秒内有100个用户同时访问,看性能如何 3. 步骤 线程组.http请求.查看结果树.聚合报告 添加http请求如下: ...