当前位置: 首页 > 面试题库 >

带有参考列的休眠一对一映射(XML映射)

杜英叡
2023-03-14
问题内容

我有一个用户表和一个user_detail具有一对一映射user_detail表的表,其中一个字段user_id用于此关系,该字段存储相应用户的ID字段值。

如何hbm为此关系编写hibernate文件?

更新

我的问题是用户的主键是id,user_detail的外键是user_id

我在Internet用户user_id中获得的所有示例均作为用户主键,与其他表中的外键相同


问题答案:

对于用户映射…。

<?xml version="1.0"?>
        <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
        <!-- Generated 25 April 2011 7:52:33 PM by Hibernate Tools 3.4.0.CR1 -->
        <hibernate-mapping>
            <class name="com.rais.User" table="USER" catalog="mydb">
                <id name="userId" type="java.lang.Integer">
                    <column name="USER_ID" />
                    <generator class="identity" />
                </id>
                <property name="userName" type="string">
                    <column name="USER_NAME" length="10" not-null="true" unique="true" />
                </property>
                <property name="userCode" type="string">
                    <column name="USER_CODE" length="20" not-null="true" unique="true" />
                </property>
                <one-to-one name="userDetail" class="com.rais.UserDetail"
                    cascade="save-update"></one-to-one>
            </class>
        </hibernate-mapping>

用于UserDetail映射。

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <!-- Generated 25 April 2011 7:52:33 PM by Hibernate Tools 3.4.0.CR1 -->
    <hibernate-mapping>
        <class name="com.rais.UserDetail" table="USER_DETAIL"
            catalog="mydb">
            <id name="userId" type="java.lang.Integer">
                <column name="USER_ID" />
                <generator class="foreign">
                    <param name="property">user</param>
                </generator>
            </id>
            <one-to-one name="user" class="com.rais.User"
                constrained="true"></one-to-one>
            <property name="compName" type="string">
                <column name="COMP_NAME" length="100" not-null="true" />
            </property>
            <property name="compDesc" type="string">
                <column name="COMP_DESC" not-null="true" />
            </property>
            <property name="remark" type="string">
                <column name="REMARK" not-null="true" />
            </property>
        </class>
    </hibernate-mapping>


 类似资料:
  • 问题内容: 我有一个带有一个字段的表,该字段可以根据说明符的值(Project,TimeKeep或CostCenter)指向其他3个表之一中的外键。通常这是通过子类实现的,我想知道是否有下面将工作。 请注意,子类名是相同的父类和noteObject属性映射到java.lang.Object类型的实例变量 ,所以应该接受一个项目,TimeKeep或CostCenter对象,只要我们投来正确的类型,h

  • 问题内容: 我需要预先将没有实现接口的枚举映射到现有数据库,该数据库使用将该枚举存储在与所有者类相同的表中。 在这种情况下应如何处理映射?持久化到数据库不会改变,因为实现该接口的所有枚举都将具有不同的值,但是我不确定应如何从数据库中检索对象(我是否需要自定义映射器,它将尝试实例化一个使用指定的enum类进行枚举吗?Hibernate是否本身支持此功能?)。 问题答案: 可以创建一个自定义(例如th

  • 问题内容: Hibernate提供的注释支持使用或两种类型的映射。当我们使用映射时,它使用的“名称” 而不是Enum 的表示形式。在数据库列仅包含一个字符的情况下,这是一个问题。例如,我有以下枚举: 当我坚持枚举使用,即休眠尝试在数据库中存储的值是开放的。但是,我的数据库列仅包含一个字符,因此会引发异常。 克服这个问题的一个办法是改变枚举类型持有单个字符(如,代替,)。但是,这降低了可读性。有什么

  • 问题内容: 我有一个颜色枚举 我有包含它的MyEntity。 我已经有一个UserType来映射我的枚举。 您知道如何在Hibernate hbm.xml中映射枚举集吗? 我需要一个UserType还是最简单的方法? 谢谢 编辑: 只是为了说明一下,我正在寻找 hbm.xml 配置而不是@CollectionOfElements注释 问题答案: 我使用EnumSet映射线程中的解决方案,该解决方案

  • 问题内容: 我有一张桌子DEAL和一张桌子DEAL_TYPE。我想映射以下代码: 问题在于数据已经存在于数据库中。而且我很难将类映射到数据库。 数据库看起来像这样: 我知道我可以在交易类型之间使用简单的@OneToMany关系,但是我更喜欢使用枚举。这可能吗? 我几乎可以通过使用EnumType.ORDINAL类型来使其工作。但不幸的是,我的交易类型表中的ID不是连续的,并且不是从1开始。 有什么

  • 有两张数据表,其中A表的某个字段的值指向B表的主键。因为A表的任何一条记录只能对应B表的一条且唯一一条记录,所以称这种 映射为A表对B表数据的一对一映射。(当然,反过来,你也可是说,是B表对A表的一对多映射)。 上述结构,如果用 POJO 来表示的话,可以参看下图: 如上图, Pet 中就可以有一个字段 master,通过自身的 masterId 指向一个 Master 对象,那么我们说 Pet.