【问题标题】:how to set default value to a relation in hibernate如何在休眠中为关系设置默认值
【发布时间】:2011-09-19 05:38:16
【问题描述】:

嗨,我正在使用 MYSQL 和 Hibernate,并且有一个表 Customer,其列 customer_type 的默认值为 1,其外键在 Customer 但在 CustomerType 表中的主键找到以下代码在我的 Customer hbm 文件中,我编写了以下代码:

<many-to-one name="customerType" class="CustomerType" lazy="false">
    <column name="customer_type_id" not-null="true"/>
</many-to-one> 

但是该列不为空,在我的表中它的默认值为 1。我在保存我的客户对象时没有设置此对象,因为表中存在默认值但获取异常 propertyviolationexception not null 引用空值我怎么能解决这个问题以及如何在休眠中为关系设置默认值

【问题讨论】:

    标签: hibernate spring


    【解决方案1】:
    As per SQL default value will be set when you omit the column in insert script.
    

    它与 Hibernate 也以相同的方式工作,它最终通过根据 HBM 中的映射包含列来执行插入脚本。一种方法是使用您的默认值为CustomerType 创建一个对象。如果您的任何业务逻辑未设置父对象,则在保存父对象时将其设置为父对象。所以,它毫无例外地被保存了。

    其他简单的方法是在多对一映射集insert='false' 中映射列customer_type_id 的原始类型字段并将值设置为1。所以,这个会被保存到数据库中作为你的默认值列,当检索关系时会很高兴地加载。

    【讨论】:

    • 嗨 Pokuri,感谢您的宝贵建议,它工作正常,我知道第一种方法,不知道第二种方法,非常感谢您
    【解决方案2】:

    你强制你的字段customer_type_idnot-null,所以休眠用它的最小值初始化值。如果您想使用默认值预设您的 id,请在 CustomerType 类的休眠映射中使用以下代码:

    <propery name="customerTypeId" type="long" column="customer_type_id">
        <column=" name="customer_type_id" not-null="true" default="1000"/>
    </property>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-24
      • 1970-01-01
      • 2013-07-26
      • 2016-11-10
      • 2012-07-05
      • 2015-03-27
      • 1970-01-01
      • 2013-02-18
      相关资源
      最近更新 更多