关于Hibernate 里面的视图映射

本文探讨了在Hibernate中如何映射视图,遇到的问题及解决方案。在尝试将视图作为表处理时,映射生成的entity包含了User和UserID两个类,导致困惑。通过搜索资料,发现可以将UserID作为实体类直接使用,并模拟主键映射。在调整后的映射配置中,遇到了'is not mapped'的错误,最终发现问题在于Dao内的实体类引用错误,修正后成功完成视图映射。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于Hibernate 里面的视图映射

今天问题是映射了一个视图

反正把视图当表用

映射的时候映射出来的entity 里面有User,和UserID 两个类

然后我就懵逼了

紧接着百度,然后找到了这个
http://www.iteye.com/topic/357351
这个用法差不多是强制转换成了有主键的映射关系

没用用user 直接把Userid当初实体类来用

是在是厉害

然后随便拿了一字段凑成ID个过来用使用

然后我就改成了从

    <class name="com.vlt.zc.entity.OUser" table="O_User" schema="dbo" catalog="CSIT_AG">
        <composite-id name="id" class="com.vlt.zc.entity.OUserId">
            <key-property name="uid" type="java.lang.String">
                <column name="UID" length="200" />
            </key-property>
            <key-property name="loginName" type="java.lang.String">
                <column name="LoginName" length="200" />
            </key-property>
            <key-property name="name" type="java.lang.String">
                <column name="Name" length="256" />
            </key-property>
            <key-property name="state" type="java.lang.Integer">
                <column name="State" />
            </key-property>
            <key-property name="phone" type="java.lang.String">
                <column name="Phone" length="1" />
            </key-property>
            <key-property name="email" type="java.lang.String">
                <column name="Email" length="1" />
            </key-property>
            <key-property name="roleid" type="java.lang.String">
                <column name="roleid" length="200" />
            </key-property>
            <key-property name="pxzd" type="java.lang.String">
                <column name="pxzd" length="40" />
            </key-property>
        </composite-id>
    </class>

改成了


 <class name="com.vlt.zc.entity.VlVideoCl" table="VL_VideoCl" schema="dbo" catalog="CSIT_AG">
        <id name="videoListId" type="java.lang.Integer">
            <column name="VideoListId" />
            <generator class="identity" />
        </id>
        <property name="videoVid" type="java.lang.Integer">
            <column name="VideoVid" />
        </property>
        <property name="videoPid" type="java.lang.String">
            <column name="VideoPid" />
        </property>
        <property name="videoTime" type="java.lang.String">
            <column name="VideoTime" />
        </property>
    </class>

但是,报错 is not mapped

没有这个表??????

你在逗我??

于是又去查询资料,然后得出结果

然后我终于发现是

!form 实体类 (Dao里面,不是表名)

简单的是form 后面跟的是实体类

也就是是

public List findAll() {
        log.debug("finding all OUser instances");
        try {
            String queryString = "from OUser";
            return getHibernateTemplate().find(queryString);
        } catch (RuntimeException re) {
            log.error("find all failed", re);
            throw re;
        }
    }

改成

    public List findAll() {
        log.debug("finding all OUser instances");
        try {
            String queryString = "from OUserId";
            return getHibernateTemplate().find(queryString);
        } catch (RuntimeException re) {
            log.error("find all failed", re);
            throw re;
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值