【问题标题】:To map a database view with no primary key, in hibernate xml mapping在hibernate xml映射中映射没有主键的数据库视图
【发布时间】:2013-04-05 09:03:46
【问题描述】:

我创建了一个仅用于获取数据的视图(只读)

视图:Grid_View

>我的休眠 hbm 文件

<hibernate-mapping>   
     <class name="hibernate.domain.View" table="Grid_View" mutable="false">
         <property name="ACCT_BR_CD" type="string">
            <column name="ACCT_BR_CD"/>
        </property>
        <property name="ACCT_NO" type="string">
            <column name="ACCT_NO"/>
        </property>
        <property name="LGL_ENTY_NM" type="string">
            <column name="LGL_ENTY_NM"/>
        </property>
        <property name="CUST_CTRY_CD" type="string">
            <column name="CUST_CTRY_CD"/>
        </property>
        <property name="ACCT_SRC_SYS_CD" type="string">
            <column name="ACCT_SRC_SYS_CD"/>
        </property>    
    </class>
</hibernate-mapping>

>由于我认为它们不是主键,我没有在我的映射中提到 id 字段。 但是在休眠时需要id。

>我的问题

如何在休眠映射文件中进行没有 id 的映射。 而且它们不是具有唯一值的列,因此它们没有任何机会使它们成为键。请帮我解决这个问题

【问题讨论】:

    标签: hibernate model-view-controller spring-mvc hibernate-mapping hbmxml


    【解决方案1】:

    您有两个选择,添加 复合键 或添加

    <id column="ROWID" type="string" />
    

    Hibernate 需要唯一的键来映射。最好的方法是添加主键。

    【讨论】:

    • 然后你可以在表中添加一个“自动增量”列,这是最好的方法,因为hibernate有很多功能如果没有像findById方法和表之间的映射这样的唯一ID就无法工作,这就是为什么hibernate强制制作ID。并且在 ID 选项中,您可以添加复合键并将所有列包含在该复合键中,然后它将起作用。
    猜你喜欢
    • 1970-01-01
    • 2015-09-26
    • 2016-01-23
    • 2010-12-11
    • 2014-11-22
    • 1970-01-01
    • 1970-01-01
    • 2018-07-11
    • 2012-06-16
    相关资源
    最近更新 更多