我经常这样指定我的@Column
注释:
@Column(columnDefinition="character varying (100) not null",length=100,nullable=false)
如您所见length
,nullable
即使columnDefinition
已经指定了,我也指定了。那是因为我不知道这些值的确切位置/时间。
因此,在指定时columnDefinition
,的其他哪些属性@Column
将变得多余?
如果有关系,我可以使用Hibernate和PostgreSQL
我的回答:应重写以下所有内容(即在columndefinition
适当的情况下,全部描述):
length
precision
scale
nullable
unique
也就是说,列DDL将包含:name
+ columndefinition
和其他所有内容 。
基本原理如下。
包含单词“ Column”或“ Table”的注释纯粹是物理的-属性 仅 用于根据数据库控制DDL / DML。
其他纯逻辑注释-在Java内存中用于控制JPA处理的属性。
这就是为什么有时会出现两次将可选性/可空性设置的原因-一次通过@Basic(...,optional=true)
和一次通过@Column(...,nullable=true)
。前者说,在刷新时,JPA对象模型(内存中)的属性/关联可以为空;后者表示DB列可以为null。通常,您希望它们设置相同- 但并非总是如此 ,这取决于数据库表的设置和重用方式。
在您的示例中,length和nullable属性被覆盖和冗余。
因此,当指定columnDefinition时,@Column的其他哪些属性将变得多余?
在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%确定,请使用您选择的实现进行测试。
从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"
我有一个带有两个顶点的简单图,具有id'a'和'b'。 我已将两条边从“a”分配到“b”,其中每条边都有标签=“foo” [1] 小精灵 == == 每条边都有一个属性key=“已提交”。 [2] 小精灵 == == 我的问题:我想像步骤[2]一样枚举边缘并返回它们各自的属性,但是如何将结果中的边缘属性匹配回它们各自的边缘(id)?我得到的只是属性键值分配;没有与边缘id相关的内容。 谢谢 乔尔·
本文向大家介绍说说Context有哪些属性?相关面试题,主要包含被问及说说Context有哪些属性?时的应答技巧和注意事项,需要的朋友参考一下 简单介绍下Context: 提供了一个无需为每层组件手动添加 ,就能在组件树间进行数据传递的方法。我们在平时开发中如果不使用redux 这种数据状态管理库,可能在数据传递的时候使用的就是从祖先元素层层传递的方式,当层级较多之后,我们需要将数据通过组件的pr
本文向大家介绍css穿透属性有哪些?相关面试题,主要包含被问及css穿透属性有哪些?时的应答技巧和注意事项,需要的朋友参考一下 /* Keyword values / pointer-events: auto; pointer-events: none; pointer-events: visiblePainted; / SVG only / pointer-events: visibleFill
员工具有以下属性 员工状态 员工分为四种状态,可在员工首页查看四种状态下员工名单。• 正常:已成功导入,可正常用车员工 • 待确认:已发送短信邀请但还未确认员工,您可以在这里查看他们的确认操作 • 待审核:已接收邀请但还未审核通过员工,您可以在这里进行审批操作 • 已离职:已到离职时间以及删除失败员工,他们将不能再使用企业支付 员工信息 在员工主页面点击某一员工右侧“详情”按钮,即可查看该名员工详
问题内容: 我注意到有些属性是在CSS中继承的,而有些则不是。例如,text-size属性是继承的,但是padding和margin不被子块继承。那么如何确定哪些属性是继承的,哪些不是? 问题答案: 这是所有可继承属性的列表。我正在使用W3C的信息,所以我认为它 应该 是正确的。但是了解网络浏览器(特别是IE)后,其中一些可能并非所有浏览器都可以继承:
本文向大家介绍CSS选择器有哪些?哪些属性可以继承?相关面试题,主要包含被问及CSS选择器有哪些?哪些属性可以继承?时的应答技巧和注意事项,需要的朋友参考一下 选择器 通配符 id class 标签 后代选择器 子选择器 兄弟选择器 属性选择器 伪类选择器 伪元素选择器 可以继承的属性 font-size font-weight font-style font-family color