栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

@Column columnDefinition使哪些属性多余?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

@Column columnDefinition使哪些属性多余?

我的回答:应重写以下所有内容(即在

columndefinition
适当的情况下,全部描述):

  • length
  • precision
  • scale
  • nullable
  • unique

也就是说,列DDL将包含:

name
+
columndefinition
和其他所有内容

基本原理如下。


  1. 包含单词“ Column”或“ Table”的注释纯粹是物理的-属性 用于根据数据库控制DDL / DML。

  2. 其他纯逻辑注释-在Java内存中用于控制JPA处理的属性。

  3. 这就是为什么有时会出现两次将可选性/可空性设置的原因-一次通过

    @Basic(...,optional=true)
    和一次通过
    @Column(...,nullable=true)
    。前者说,在刷新时,JPA对象模型(内存中)的属性/关联可以为空;后者表示DB列可以为null。通常,您希望它们设置相同- 但并非总是如此 ,这取决于数据库表的设置和重用方式。

在您的示例中,length和nullable属性被覆盖和冗余。


因此,当指定columnDefinition时,@Column的其他哪些属性将变得多余?

  1. 在JPA Spec和javadoc中:

    • columnDefinition
      定义: 生成列的DDL时使用的SQL片段。

    • columnDefinition
      默认值: 生成的SQL以创建推断类型的列。

    • 提供以下示例:

          @Column(name="DESC", columnDefinition="CLOB NOT NULL", table="EMP_DETAIL")

      @Column(name=”EMP_PIC”, columnDefinition=”BLOB NOT NULL”)

    • 而且,嗯…就是这样。:-$?!

columnDefinition是否会覆盖同一批注中提供的其他属性?

Javadoc和JPA规范未明确解决此问题-规范没有提供很好的保护。要100%确定,请使用您选择的实现进行测试。

  1. 从JPA规范中提供的示例可以安全地暗示以下内容

    • name
      table
      可以与结合使用
      columnDefinition
      ,都不会被覆盖
    • nullable
      被…覆盖/使其冗余
      columnDefinition
    • 从“情境逻辑”中可以很安全地隐含以下内容(我只是说那句话?? :-P):

    • length
      precision
      scale
      是覆盖/冗余由
      columnDefinition
      -它们是一体的类型

    • insertable
      updateable
      分别提供,并且从不包含在内
      columnDefinition
      ,因为它们在将SQL生成数据库之前控制它们在内存中的生成。
    • 剩下的只是“
      unique
      ”属性。它类似于nullable-扩展/限定类型定义,因此应将其视为类型定义的组成部分。即应该被覆盖。

测试我的答案分别 对列“ A”和“ B”:

  @Column(name="...", table="...", insertable=true, updateable=false,          columndefinition="NUMBER(5,2) NOT NULL UNIQUE"  @Column(name="...", table="...", insertable=false, updateable=true,          columndefinition="NVARCHAr2(100) NULL"
  • 确认生成的表具有正确的类型/可空性/唯一性
  • (可选)执行JPA插入和更新:前者应包含A列,后一列B


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/412901.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号