知识点:

@Column注解一共有10个属性,这10个属性均为可选属性,各属性含义分别如下:

name 
name属性定义了被标注字段在数据库表中所对应字段的名称;

unique 
unique属性表示该字段是否为唯一标识,默认为false。如果表中有一个字段需要唯一标识,则既可以使用该标记,也可以使用@Table标记中的@UniqueConstraint。

nullable 
nullable属性表示该字段是否可以为null值,默认为true。

insertable 
insertable属性表示在使用“INSERT”脚本插入数据时,是否需要插入该字段的值。

updatable 
updatable属性表示在使用“UPDATE”脚本插入数据时,是否需要更新该字段的值。insertable和updatable属性一般多用于只读的属性,例如主键和外键等。这些字段的值通常是自动生成的。

columnDefinition 
columnDefinition属性表示创建表时,该字段创建的SQL语句,一般用于通过Entity生成表定义时使用。(也就是说,如果DB中表已经建好,该属性没有必要使用。)

table 
table属性定义了包含当前字段的表名。

length 
length属性表示字段的长度,当字段的类型为varchar时,该属性才有效,默认为255个字符。

precision和scale 
precision属性和scale属性表示精度,当字段类型为double时,precision表示数值的总长度,scale表示小数点所占的位数。

precision和scale疑点:

@Table(name = "CUSTOMERS")
@Entity
public class Customer {@Column(name = "ID")@GeneratedValue(strategy = GenerationType.AUTO)@Idprivate Integer id;@Column(name = "Name")private String name;@Column(name = "Email", nullable = true, length = 128)private String email;@Column(name = "Age")private int age;@Column(name = "Remark", columnDefinition = "text")private String remark;@Column(name = "Salary1", columnDefinition = "decimal(5,2)")private double salary1;@Column(name = "Salary2", precision = 5, scale = 2)private double salary2;@Column(name = "Salary3", columnDefinition = "decimal(5,2)")private BigDecimal salary3;@Column(name = "Salary4", precision = 5, scale = 2)private BigDecimal salary4;......
}

数据库DDL:

CREATE TABLE `customers` (`ID` int(11) NOT NULL AUTO_INCREMENT,`Age` int(11) DEFAULT NULL,`Email` varchar(128) DEFAULT NULL,`Name` varchar(255) DEFAULT NULL,`Remark` text,`Salary1` decimal(5,2) DEFAULT NULL,`Salary2` double DEFAULT NULL,`Salary3` decimal(5,2) DEFAULT NULL,`Salary4` decimal(5,2) DEFAULT NULL,PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

总结:

1.double类型若在columnDefinition属性中指定数字类型为decimal并指定精度,则最终以columnDefinition为准 (oracle数据库中除外,其指定为float类型,因为oracle数据库没有double类型,若针对oracle数据库进行精确,则改为

@Column(name = "Salary1", columnDefinition = "decimal(5,2)")  //或columnDefinition = "number(5,2)"private Float salary1;

2.double类型将在数据库中映射为double类型,precision和scale属性无效

3.BigDecimal类型在数据库中映射为decimal类型,precision和scale属性有效

4.precision和scale属性只在BigDecimal类型中有效

JPA Column注解相关推荐

  1. JPA的Column注解总结

    为什么80%的码农都做不了架构师?>>>    就像@Table注解用来标识实体类与数据表的对应关系类似,@Column注解来标识实体类中属性与数据表中字段的对应关系. 该注解的定义 ...

  2. Spring Boot集成JPA的Column注解命名字段无效的问题

    偶然发现,Spring Boot集成jpa编写实体类的时候,默认使用的命名策略是下划线分隔的字段命名. Spring Boot版本:1.5.4.release 数据表: id int, userNam ...

  3. JPA Annotation注解

    JPA & Hibernate 注解 先说说JPA和Hibernate的关系 JPA(Java Persistence API),是Java EE 5的标准ORM接口,也是ejb3规范的一部分 ...

  4. Java基础学习总结(41)——JPA常用注解

    JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中.         JPA由EJB 3.0软件专 ...

  5. JPA基础知识----JPA 基本注解,JPA API

    JPA 是什么     Java Persistence API:用于对象持久化的 API     Java EE 5.0 平台标准的 ORM 规范,使得应用程序以统一的方式访问持久层 JPA和Hib ...

  6. 【Spring Data JPA】JPA常用注解

    文章目录 常用基本注解 @Entity[指定该实体类被JPA管理] @Table[指定该实体类对应哪张表] @Id[单个主键] @IdClass[联合主键] @Column[表示实体类属性对应数据库表 ...

  7. oracle jpa字段加注释,JPA 通过注解自动生成表,添加 字段名、类型、注释

    JPA 通过注解自动生成表,添加 字段名.类型.注释 发布时间:2018-04-13 16:27, 浏览次数:3806 , 标签: JPA JPA对象注解类型 @Table - 映射表名 @Id - ...

  8. @Column注解及属性详解

    @Column注解 用来标识实体类中属性与数据表中字段的对应关系 (1)源码: /** Copyright (c) 2008, 2009, 2011 Oracle, Inc. All rights r ...

  9. JPA实体注解与hibernate主键生成策略

    JPA实体注解与hibernate主键生成策略 用hibernate注解开发项目,对于主键的生成策略有些模糊,下面是从新浪网里面看到的一篇关于hibernate注解以及主键生成策略的文章,值得一看: ...

最新文章

  1. 关于 Caused by: java.lang.NoClassDefFoundError: com/alipay/api/AlipayApiException 解决办法
  2. 硬盘显示容量和实际容量不符合_SSD小讲堂丨实力科普固态硬盘实际容量为何比标称小...
  3. vue --- 全局注册子组件,并导入全局的子组件
  4. Linux系统正则表达式用法笔记
  5. NSOperation的进阶使用和简单探讨
  6. Google 6面,最终还是挂了…
  7. tf.one_hot函数用法
  8. allure的安装使用以及报告的生成
  9. java程序员待遇怎么样_现在的java程序员薪资待遇怎么样?
  10. win10开发环境搭建之wsl2(Ubuntu)+Terminal+docker
  11. win10便签常驻桌面_Win10下环境有哪些好用的便签记事本?想和iPhone一块儿用 - 学显...
  12. Mac电脑批量修改图片名称
  13. 蒙特卡罗算法是什么?
  14. 关系模式(关系模式必须遵循)
  15. “喜报云报销”荣获中国金软件移动互联网领域最具应用价值解决方案奖
  16. 域服务器用户一直被锁,Windows Server 2019 域用户账户锁定策略
  17. 利用html 和css模仿必应搜索主页。(一)
  18. Structured Program I – Print a Frame
  19. eclipse的使用操作技巧
  20. python绘制蟒蛇_Python实现七彩蟒蛇绘制实例代码

热门文章

  1. 设计原则与思想:面向对象11讲
  2. 矢量网络分析仪 Anritsu MS4630B
  3. 进销存设计与分析_采购退货单(3)
  4. MySQL数据库的函数与分组_第四篇(一万字非常详细)
  5. //编写程序,输入一个四位数整数如5678,求出它的各位数之和,并在屏幕上解出。
  6. 计算机图形学绘图程序设计
  7. python try和except用法
  8. 目标检测和分割中Backbone技术总结
  9. YOLOv5 backbone(一)
  10. JAVA判断当前时间在时间范围内