知识点:

@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. 收藏 | 这100+个免费API,免了自己去爬的烦恼!
  2. php采集网页,phpQuery采集网页实现代码实例
  3. Apache ZooKeeper - FourLetterCommands运维命令
  4. 大话数据结构03:静态链表
  5. 创建第一个RMI应用
  6. C语言实现贪吃蛇(简易)
  7. 计算机二级office基础知识题库,计算机office二级考试题库
  8. php动态字体,APP动态切换字体的实现
  9. IE插件加载题目调试
  10. c51单片机中断详解--适合初学者
  11. 不要走开,有足够多的理由持续关注下去
  12. 声压、声强、声功率是什么?有什么区别。
  13. 张勋说:棒磨机钢棒直径的配置(热处理调质耐磨钢棒)
  14. SEAndroid中sepolicy/adbd.te策略文件分析
  15. 我经历的字节跳动后台开发实习二面,面试官说叫我补补操作系统和算法
  16. PostgreSQL谓词之EXISTS
  17. vue3.0 + elementPlus 后台管理系统模板
  18. Docker 基本操作 数据卷 -- docker 数据卷基本操作、挂载数据卷
  19. 客户案例|保险行业借助智能外呼充分结合业务需求和实际应用场景快速筛选客户
  20. 全面屏的Nokia X即将上线,不到2000元的信仰你要充值吗?

热门文章

  1. Python3, 19行代码,让微信登录页面地球转起来,涨见识了。
  2. java群发图文消息_java微信群发图文消息 java总结_图文.doc
  3. 爱普生Epson EP-804AR 一体机驱动
  4. cdn与gnd接地_浪涌测试中通讯端口TVS管损坏机理分析
  5. 【如何实现一个简单的canvas动态水球图】
  6. JS用面向对象的思想实现的购物车
  7. Ubuntu锁屏突然失效
  8. scala的filter函数
  9. 元宇宙何以赋能教育丨虚拟动力高校动作捕捉与虚拟实训室解决方案
  10. CISCO NAT配置