@Column 注解属性详解

提示:文章旨在说明 @Column 注解属性如何在日常开发中使用,数据库类型为 MySql,其他类型数据库可能存在偏差,需要注意。

文章目录

  • 一、name 方法
  • 二、unique 方法
  • 三、nullable 方法
  • 四、insertable 方法
  • 五、updatable 方法
  • 六、columnDefinition 方法
  • 七、table 方法
  • 八、length 方法
  • 九、precision 方法
  • 十、scale 方法
  • 总结


提示:以下是本篇文章正文内容,下面案例可供参考

一、name 方法

String name() default "";

该方法用于将实体类的属性与数据库表中的列进行映射,比如:

@Column(name = "user_age")
private String age;  // 映射到数据库的 user_age 列

如果不用该方法,则 java 实体类与数据库表中的列保持一致,如java中是 age,则数据库中也是 age,但是如果开启了全局命名策略,如小驼峰转换下划线,则会默认将java中多个单词的属性,用下划线隔开,并小写。如userAge,则对应的列为user_age;判断用下划线是取决于大写的字母。

开启配置:

spring:jpa:hibernate:naming:physical-strategy: org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy

二、unique 方法

boolean unique() default false;

指示该列是否具有唯一约束,建议与数据库中唯一索引共同开启,默认 false。

@Column(unique = true)
private String email;  // 确保email列的值在表中是唯一的

唯一索引

三、nullable 方法

boolean nullable() default true;

指示该列是否允许为 null 值,默认 true。

@Column(nullable = false)
private String password;  // 密码字段不允许为null

四、insertable 方法

boolean insertable() default true;

指示该列是否允许为 null 值,默认 true。

@Column(insertable = false)
private Date createTime;  // 创建时间由数据库自动生成,不包含在INSERT中

五、updatable 方法

boolean updatable() default true;

指示该列是否包含在 UPDATE 语句中,默认 true。

@Column(updatable = false)
private Long id;  // ID一旦创建不可更新

六、columnDefinition 方法

String columnDefinition() default "";

指定生成 DDL 时使用的列定义。

@Column(columnDefinition = "TEXT")
private String content;  // 指定为TEXT类型而非默认的VARCHAR@Column(columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
private Date lastModified;  // 指定为TIMESTAMP类型,使用当前时间函数@Column(columnDefinition = "varchar(64) comment '版本号'") 
private String edition;  // 指定为varchar类型,长度为64,中文注释为版本号

如果配置 spring.jpa.hibernate.ddl-auto=update,则会读取该方法生成对应的列,所以在开发阶段,配合使用会大大节约开发时间,强烈建议使用。唯一注意的是在使用需要让 java 中的类型与数据库中类型兼容,不要出现 java 中是字符串,而数据库中是时间类型。

七、table 方法

String table() default "";

当实体映射到多个表时,指定该列所属的表。

@Column(name = "hobby", table = "user_details")
private String hobby;  // 该属性映射到user_details表的列

该方法实际使用会比较复杂,会和 @SecondaryTable 注解配合使用,那么从例子可以看到,在主表对应的列是 hobby,在扩展表对应的列是 user_details,当然实际使用情况可能还会存在其他关联情况,这里不做过多讨论,大家只需知道该方法用于将属性映射到扩展表中的列即可。

八、length 方法

int length() default 255;

指定字符串类型列的长度(仅对String类型有效),默认 255。

@Column(length = 100)
private String title;  // 标题最大长度为100字符

九、precision 方法

int precision() default 0;

指定十进制数值的精度(总位数),用于 BigDecimal,默认 0。

@Column(precision = 10, scale = 2)
private BigDecimal salary;  // 总共10位,小数点后2位

一般和 scale 配合使用,建议对精确到小数点后几位的数字类型使用,场景建议为工业数字,钱币数值等。

十、scale 方法

int scale() default 0;

指定十进制数值的小数位数,用于 BigDecimal,默认 0。

@Column(precision = 5, scale = 2)
private BigDecimal price;  // 如123.45

一般和 precision 配合使用。

总结

没有总结,希望大家在实际开发中真正理解,并正确使用就好~~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/news/906729.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Gemini, LangChain, Gradio打造一个书籍推荐系统 (第二部分)

建立向量嵌入数据库 from langchain_community.document_loaders import TextLoader from langchain_text_splitters import CharacterTextSplitter from langchain.docstore.document import Document from langchain_chroma.vectorstores import Chromaimport vertexai from…

【Go-4】函数

函数 函数是编程中的基本构建块,用于封装可重用的代码逻辑。Go语言中的函数功能强大,支持多种特性,如多返回值、可变参数、匿名函数、闭包以及将函数作为值和类型传递。理解和掌握函数的使用对于编写高效、可维护的Go程序至关重要。本章将详…

【已解决】HBuilder X编辑器在外接显示器或者4K显示器怎么界面变的好小问题

触发方式:主要涉及DPI缩放问题,可能在电脑息屏有概率触发 修复方式: 1.先关掉软件直接更改屏幕缩放,然后打开软件,再关掉软件恢复原来的缩放,再打开软件就好了 2.(不推荐)右键HBuilder在属性里…

spark调度系统核心组件SparkContext、DAGSchedul、TaskScheduler、Taskset介绍

目录 1. SparkContext2.DAGScheduler3. TaskScheduler4. 协作关系5 TaskSet的定义6. 组件关系说明Spark调度系统的核心组件主要有SparkContext、DAGScheduler和TaskScheduler SparkContext介绍 1. SparkContext 1、资源申请: SparkContext是Spark应用程序与集群管理器(如St…

VSCode+EIDE通过KeilC51编译,使VSCode+EIDE“支持”C和ASM混编

在使用Keil C51时,要让Keil C51支持混编则需要在混编的.c文件上右键选择Options for File *(ALTF7),打开选项界面后,在 Properties 页 勾上 Generate Assembler SRC File 和 Assemble SRC File ,如下图所示: 这样设置后…

SQLynx:一款跨平台的企业级数据库管理工具

SQLynx 是一款支持跨平台(Windows、Linux、macOS、Web)的企业级数据库管理和 SQL 工具,可以提供高效、安全且适配国产化技术栈的数据库管理解决方案。 数据源 SQLynx 支持连接各种关系型数据库、非关系型数据库以及大数据平台,包…

实战项目8(实训)

目录 项目01 【sw1】配置 【sw2】配置 任务结果截图 项目02 【sw1】配置 【sw2】配置 任务结果截图 项目03 【sw1】配置 任务结果截图 项目04 【sw1】配置 【r1】配置 任务结果截图 项目05 【r1】配置 【r2】配置 【r3】配置 任务结果截图 项目06 【r1】…

TCP为什么是三次握手,而不是二次?

为什么需要三次握手? 想象一下,你要给远方的朋友寄一份重要文件。你会怎么做? 普通人的做法: 直接扔进邮箱,祈祷别丢了 聪明人的做法: 先打电话确认地址,再发快递,最后确认收到 T…

dubbo使用nacos作为注册中心配置

<dubbo:registry protocol"nacos" address"${dubbo.registry.address.nacos}" /> <dubbo:metadata-report address"${dubbo.metadata-report.address}"/> 如果有多个地址&#xff0c;这块如何配置呢&#xff1f; nacos://ip:端口?…

教师角色的转变:从知识传授者到学习引导者

教师角色的转变&#xff1a;从知识传授者到学习引导者 随着人工智能&#xff08;AI&#xff09;和信息技术的迅速发展&#xff0c;教育正在经历深刻的变革。其中&#xff0c;教师角色的转变尤为关键。传统上&#xff0c;教师主要承担“知识传授者”的职责&#xff0c;即向学生…

PostgreSQL 用户权限与安全管理

1 系统默认角色 postgres# select rolname from pg_roles; rolname ----------------------------- postgres pg_database_owner pg_read_all_data pg_write_all_data pg_monitor pg_read_all_settings pg_read_all_stats pg_stat_scan_tables …

C++构造函数和析构函数

C++构造函数和析构函数 C++的构造函数和析构函数是类的特殊成员函数,用于对象的创建和销毁,分别在对象的生命周期开始和结束时自动调用。它们的使用对资源管理和对象的初始化/清理至关重要。 1. 构造函数 定义 构造函数在对象创建时自动调用,用于初始化对象的数据成员。构造…

根据Cortex-M3(STM32F1)权威指南讲解MCU内存架构与如何查看编译器生成的地址具体位置

首先我们先查看官方对于Cortex-M3预定义的存储器映射 1.存储器映射 1.1 Cortex-M3架构的存储器结构 内部私有外设总线&#xff1a;即AHB总线&#xff0c;包括NVIC中断&#xff0c;ITM硬件调试&#xff0c;FPB, DWT。 外部私有外设总线&#xff1a;即APB总线&#xff0c;用于…

软件设计师“测试用例”考点分析——求三连

一、测试用例设计核心要点解析 1. 白盒测试覆盖标准 &#xff08;1&#xff09;路径覆盖&#xff1a;需覆盖程序中所有可能的路径。如2018年真题路径覆盖需要3组测试用例&#xff08;①②、①③、①③④&#xff09;&#xff0c;2020年流程图则需4个用例覆盖ace/abd/abe/acd四…

Linux 用户无法远程连接服务器

前言 昨天深夜一点多接到客户电话&#xff0c;客户说OS用户下午下班前还能正常登录。因为晚上一点半需要关闭所有服务进行迁移&#xff0c;但是用户无法登录了&#xff0c;导致后续流程无法执行。我让他先通过root用户紧急修改了密码&#xff0c;先保证业务正常流转。 问题 …

多模态大语言模型arxiv论文略读(八十八)

MammothModa: Multi-Modal Large Language Model ➡️ 论文标题&#xff1a;MammothModa: Multi-Modal Large Language Model ➡️ 论文作者&#xff1a;Qi She, Junwen Pan, Xin Wan, Rui Zhang, Dawei Lu, Kai Huang ➡️ 研究机构: ByteDance, Beijing, China ➡️ 问题背景…

svn迁移到git保留记录和Python字符串格式化 f-string的进化历程

svn迁移到git保留记录 and Python字符串格式化(二&#xff09;&#xff1a; f-string的进化历程 在将项目从SVN迁移到Git时&#xff0c;保留完整的版本历史记录非常重要。下面是详细的步骤和工具&#xff0c;可以帮助你完成这一过程&#xff1a; 安装Git和SVN工具 首先&#…

springboot配置mysql druid连接池,以及连接池参数解释

文章目录 前置配置方式参数解释 前置 springboot 项目javamysqldruid 连接池 配置方式 在 springboot 的 application.yml 中配置基本方式 # Druid 配置&#xff08;Spring Boot YAML 格式&#xff09; spring:datasource:url: jdbc:mysql://localhost:3306/testdb?useSSL…

vue实现高亮文字效果——advanced-mark.js

组件介绍-advanced-mark.js&#xff1a; advanced-mark.js 是一个用于 Vue 的高亮文字组件&#xff0c;它可以帮助你在文本中高亮显示指定的关键词或短语。 组件地址&#xff1a;https://angezid.github.io/advanced-mark.js/doc-v2/getting-started.html 主要功能&#xff1…

DC30V/2.5A同步降压芯片SL1581 输入24V降压5V 12V2A电流

在工业自动化、汽车电子等领域&#xff0c;24V 电源系统向 5V/12V 双轨供电的需求日益增长。针对这一痛点&#xff0c;森利威尔电子重磅推出 DC30V/2.5A 同步降压芯片 SL1581&#xff0c;凭借卓越的性能和创新设计&#xff0c;为工程师提供高可靠性、高性价比的电源解决方案。 …