@Column写在属性和写在get方法上面的区别

news2024/9/27 5:55:18

📢📢📢📣📣📣
哈喽!大家好,我是「奇点」,江湖人称 singularity。刚工作几年,想和大家一同进步🤝🤝
一位上进心十足的【Java ToB端大厂领域博主】!😜😜😜
喜欢java和python,平时比较懒,能用程序解决的坚决不手动解决😜😜😜

✨ 如果有对【java】感兴趣的【小可爱】,欢迎关注我

❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️
————————————————

如果觉得本文对你有帮助,欢迎点赞,欢迎关注我,如果有补充欢迎评论交流,我将努力创作更多更好的文章。

目录

 问题描述

总结

分析


 

 

 

 问题描述

Caused by: java.sql.SQLSyntaxErrorException: Unknown column 'creatorName' in 'field list'
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)
        at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
        at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:916)
        at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1061)
     

今天是有jpa遇到了一个坑,之前没有注意,今天进行了整理,总结一下JPA中的@Column写在属性和写在get方法上面的区别是什么。

总结

即在相应的数据库表里找不到creatorName字段。我觉得很奇怪。请教了大佬,然后查了一些别人的文章,现在做一下总结。

1、首先,我的字段名虽然起的符合一般规范,但应该是不符合JPA的命名规范的,不然也不会在映射时将“creatorName”映射成“creator_name”。

2、当时,我的@Id字段时写在id的属性上,而我的@Column(name = "creator_name")写在了get方法上,如下图:

   而id属性写在属性上面

 最后在进行保存的时候提示字段不存在。creatorName

分析

请教过大佬以后,才知道:虽然@Column可以写在属性上,也可以写在get方法上,但是它必须和@Id在同样的位置才会起效。即@Id在字段属性上,@Column也必须写在字段属性上,写在get方法上是不生效的。

有人可能会问,为什么我有的写在字段属性上,有的写在get方法上也不会报错,都会生效呢?

这大概是因为你的字段命名都是标准的驼峰式,所以jpa会按照既定的规则对你标准驼峰式的字段名进行拆解,虽然和@Id不在同样位置的@Column没有生效,但是因为你的字段名是标准驼峰式,那么JPA拆解后就能顺利找到你在数据库的字段了。但是我这个 名字估计是因为不符合JPA要求的命名规则,而且@Column和@Id不在同一位置上,所以导致@Column没有生效,然后JPA按照它自己的一套规则对我的creator_name进行转换,转成了“creatorName”,自然就在数据库找不到对应的字段了。

这里有一个点就是,如果你的命名是标准的符合JPA命名规范的驼峰式,那么你不写@Column也可以。我想@Column最大的作用就是,当你的实体类里某个属性的名字和数据库对应的字段名不一致时,可以用来告诉JPA这个属性在数据库表中的真实名字。例如: 

当你在实体类里叫code的属性,对应的是数据库表中的num字段时,生效的@Column会告诉JPA这个code属性在数据库中的真实名字。

具体深入的掌握还需要对jpa的源码进行解读才能知道这个解析过程是如何进行的,这里进行简单的分析,后续专门再学习一下jpa的源码。

 

如果觉得本文对你有帮助,欢迎点赞,欢迎关注,如果有补充欢迎评论交流,我将努力创作更多更好的文章。

 

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

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

相关文章

【YOLOv7/YOLOv5系列改进NO.51】融入多分支空洞卷积结构RFB-Bottleneck改进PANet构成新特征融合网络

文章目录前言一、解决问题二、基本原理三、​添加方法四、总结前言 作为当前先进的深度学习目标检测算法YOLOv7,已经集合了大量的trick,但是还是有提高和改进的空间,针对具体应用场景下的检测难点,可以不同的改进方法。此后的系列…

axios中get、post请求传参区别及使用

axios 发送请求时 params 和 data 的区别 params 中的参数是通过地址栏传参,一般用于get请求data 是添加到请求体(body)中的, 一般用于post请求get请求只能传query参数,query参数都是拼在请求地址上的post可以传body和…

qt使用qxlsx实现xlsx、xls表格文件快速写入和读取

一、前言 本片文章主要记录和分享一下qt使用qxlsx开源文件读写xlsx表格文件用法。 目录一、前言二、环境三、正文1.读取指定xlsx文件2.保存xlsx文件3.保存xlsx文件内容过大崩溃解决方案一4.保存xlsx文件内容过大崩溃解决方案二四、结语二、环境 windows linux qt5.7 三、正文…

【财务】FMS财务管理系统---对账平台

人工进行对账工作是非常繁杂的,此时,就非常有必要建设一个对账平台。笔者在本文介绍了对账平台的相关内容,分享给大家。 前面介绍过应收对账、财务应付结算两部分内容;应收对账主要是调用第三方支付的接口获取支付流水信息与我司的…

C++设计模式:三种工厂模式详解(简单工厂,工厂模式,抽象工厂)

文章目录简单工厂模式简单工厂实现步骤简单工厂优缺点工厂模式工厂模式和简单工厂模式有什么不同?工厂模式实现步骤实现代码工厂模式优缺点抽象工厂模式抽象工厂模式实现步骤实现代码抽象工厂模式优缺点简单工厂模式 简单工厂模式属于类的创建型模式,又叫做静态工厂…

【算法】算法分析技术(第一章习题解答)

1 算法分析技术 1.1 假设 fff 和 ggg 是定义在自然数集合上的函数, 若对某个其他函数 hhh 有 fO(h)f O(h)fO(h)和 gO(h)g O(h)gO(h) 成立, 那么证明 fgO(h)f g O(h)fgO(h) 证明: 根据已知条件 fO(h)f O(h)fO(h),存在 c1>0c_{1}>0c1​>0 …

错题记录2:源码补码二进制转换

补码原码二进制一直是本人比较头疼的问题,今日找题目来做发现还是错得多,记录以下,再回顾一遍。 1.如下代码输出的是什么( ) char a101; int sum200; a27;suma; printf("%d\n",sum); A: 327 B: 99 C: 3…

【MySQL】详解MySQL数据库事务

MySQL数据库事务数据库事务特性事务的并发问题事务的隔离级别分布式事务解决方案1.XA 协议2.TCC3.消息一致性方案4.阿里云中的全局事务服务 GTS数据库事务特性 数据库事务具备ACID四大特性: 原子性:是指事务操作时具备原子操作的,就是说整…

分布式系统架构

分布式系统定义 分布式系统:硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。 为什么需要分布式系统 提升系统吞吐量:集群协同解决单机性能瓶颈提高系统可用性 :冗余部署,各…

OSS阿里云存储

一、开通“对象存储OSS”服务 2、进入管理控制台 二、控制台使用 点击Buket列名,Buket可以看作是一系列的虚拟内存空间它是一个独立的小个体 创建mystudent 创建成功后就有下面的样子了 ,创建的时候读写权限,我们选择公共读&#xff0c…

matlab中sign函数的使用(提取符号)

仅用于记录自己学习过程中遇到的函数 matlab中sign函数的使用,提取符号 一、语法 Y sign(x) 返回与 x 大小相同的数组 Y,其中 Y 的每个元素是: 1,前提是 x 的对应元素大于 0。 0,前提是 x 的对应元素等于 0。 -1&am…

CAP定理与分布式事务理论

文章目录一、CAP定理1.1 一致性1.2 可用性1.3 分区容错1.4 定理的矛盾点二、分布式事务理论2.1 BASE理论2.2 解决分布式事务思路一、CAP定理 分布式系统有三个指标。 Consistency(一致性)Availability(可用性)Partition toleranc…

GBASE斩获2022科技赋能金融业数字化转型突出贡献奖

12月27日,由中国人民银行主管的《金融电子化》杂志社主办的“2022中国金融科技年会暨第十三届金融科技应用创新奖颁奖典礼”成功举办,在本次活动上,GBASE南大通用“多模多态分布式数据库GBase 8c”,荣获“2022科技赋能金融业数字化…

PyCharm高级配置

pycharm设置内存大小步骤1,Help -> FindAction -> (输入 “VM”) -> (点击)“Edit Custom VM options”2,Pycharm会在编辑器中打开适当的vmoptions文件(pycharm.vmoptions或pycharm64.options)。3,将**-Xms**…

CCIE重认证350-401

拖图题 QoS traffic policing: causes TCP retransmissions when traffic is dropped导致TCP重传时流量下降 introduces no delay and jitter引入无延迟和抖动 drops excessive traffic减少过多的流量 traffic shaping: buffers excessive traffic缓冲过多的流量 introduce…

Sensor+ISP专栏-Demosaic

SensorISP专栏-Demosaic 1.what is raw raw图指的是从cmos sensor直接输出的原始图像,它本身没有颜色分量。在CMOS Sensor中使用彩色滤镜阵列(color filter array,CFA) 的方式捕获彩色图像,每个感光像素的上面覆盖一个语物理像素相同面积大…

OpenStack-Mitaka版本部署

1.环境准备 centos7.2相关文件 镜像:https://mirrors.aliyun.com/centos-vault/7.2.1511/isos/x86_64/CentOS-7-x86_64-DVD-1511.iso?spma2c6h.25603864.0.0.5c565932JYniuU openstack-mitaka rpm包:https://mirrors.aliyun.com/centos-vault/7.2.15…

hadoop 3.x 案例7: hadoop大数据平台日志

文章目录一. Hadoop日志1.1 namenode日志1.2 datanode日志1.3 secondarynamenode日志1.4 yarn日志1.4.1 resourcemanger日志1.4.2 nodemanager日志1.5 historyServer日志二. Hive日志三. Spark日志四. Flink日志一. Hadoop日志 cd $HADOOP_HOME/logs日志分类: namenode日志 d…

【ROS】—— ROS通信机制进阶(七)

文章目录前言1. 常用API(C)1.1 初始化1.2 话题与服务相关对象1.3 回旋函数(重点)1.4 时间1.4.1 获取当前时刻and指定时刻1.4.2 持续时间1.4.3 时间运算1.4.4 设置运行频率1.4.5 定时器1.5 其他函数2. 常用API(python)2.1 初始化2.2 话题与服务相关对象2.3 回旋函数2.4 时间2.4.…

Bandit算法学习[网站优化]02——epsilon-Greedy 算法

Bandit算法学习[网站优化]02——epsilon-Greedy 算法 参考资料 White J. Bandit algorithms for website optimization[M]. " O’Reilly Media, Inc.", 2013.https://github.com/johnmyleswhite/BanditsBook 实验环境:jupyter python 3.7 项目地址&am…