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处理视图问题(记录)

时间: 2024-12-10 07:51:57

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

hibernate mysql视图操作

hibernate对视图操作,首先建立数据库视图 视图v_invite: create view pintu.v_invite asselect cp.user_id as be_user_id,cai.activity_invite_id,cai.person_id,cai.person_name,cai.be_person_id,cai.activity_id,cai.invite_timefrom ptcom.com_person cp, ptcom.com_activity_invite

关于hibernate查询视图时,相同主键的两条记录映射问题【已解决】

做项目中间遇到一个很诡异的问题: 有两个表:A和AHistory(A表记录删除后存入此表,A的历史表),当我复制一条记录到AHistory表时,此时A表和AHistory表两条记录id相同,后续通过修改操作将两表任意一条记录更新为不同的信息,但ID仍然相同:此时,如果用hibernate映射到实体类中时,想象中的应该是两个不同的实体类,拥有不同的属性等. 然而,当我在程序中查询这两条ID相同的记录后,所得到两个的hibernate映射实体类却完全相同. 通过此问题,才知道hibernate会将查

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

editable="bottom" 增加该标签的效果是,添加记录的时候,在原列表视图上一行一行添加; 去掉该标签之后,那么增加新记录的时候,会以弹出窗口的方式实现. 如果弹出的窗口显示的效果不好,那么可以自定义form视图. 原文地址:https://www.cnblogs.com/hellojesson/p/8653155.html

JAVA spring hibernate 多数据源配置记录

数据源配置 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://www.spri

Hibernate 优化技术之调用视图(View)和存储过程(Procedure)

前言 上一篇blog记录了hibernate抓取策略的相关用法(http://blog.csdn.net/wlwlwlwl015/article/details/42705585),它主要是在对象导航时为我们进行HQL方面的优化.本篇blog将介绍一些通用性的优化方式,即在hibernate中使用视图和存储过程.在数据量比较大时(百万级),使用hibernate时不再推荐使用HQL,而是使用原生的SQL语句,而视图.索引.存储过程等数据库对象也都是基于底层数据库和原生的SQL派生出的优化方案,废

Hibernate的学习(一)

Hibernate是什么?Hibernate是一个轻量级的ORM框架ORM--------Object Relational MappingORM的基本对应规则:1,类跟表相对应2,类的属性和表的字段相对应3,类的实例与表中的一条记录相对应4,一个类可以对应多个表,一个表可以对应过个类5,DB中的表可以没有主键,但是Object中必须设置主键字段(?)6,DB中的表与表的关系,映射为Object之间的关系7,Object中的属性的个数和名称和表中的字段的个数和名称可以不同 Hibernate中的

springMVC+spring+hibernate 框架整合实例

先说一下流程思路: 流程讲解1:首先访问会先定位到控制器.这就用到了过滤器配置文件"spring-mvc.xml".这个文件负责定义控制器的包路径.视图的格式等.其次从"控制器->service层->dao层",期间用的都是spring的依赖注入,所以就需要一个bean容器配置文件,将所有的"等待被注入的类"在xml文件里申明一下.这个xml文件就是"spring-beans.xml".之后,dao层要操作enti

Struts+Hibernate+Spring面试题合集及答案

Struts+Hibernate+Spring面试题合集及答案 Struts+Hibernate+Spring面试题合集 1 1. Hibernate部分 2 1.1. Hibernate工作原理 2 1.2. 什么是Hibernate的并发机制?怎么处理并发问题? 2 1.3. Hibernate自带的分页机制是什么?如果不使用Hibernate自带的分页,则采用什么方式分页? 3 1.4. hibernate的对象的三种持久化状态,并给出解释? 3 1.5. hibernate的三种状态之间

hibernate注解映射属性

https://blog.csdn.net/dada678/article/details/51786201 1.普通属性 @Entity:修饰的持久化类的所有属性都会被映射到底层数据库. @Column:修饰属性 @Transient:修饰不想持久化保存的属性. @Lob:修饰大数据属性. 当属性为byte[].Byte[]时数据库对应Blob 当属性为char[].character[].String时,对应为Clob. @Temporal修饰日期类型 支持TemporalType.DATE