Hibernate @Column,表字段大小寫引起的問題

本文主要探讨了在老项目的二次开发中如何处理数据库字段映射的问题。特别关注于如何将代码中的字段名称与数据库中的字段名称进行适配,避免因命名差异导致的数据同步错误,并提出了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

維護一些老項目,或者對老項目的二次開發情景下比較多注意這些問題。

1) 假設column的name寫成小駱駝峰標誌(userName),到數據庫會譯成user_name

       @Column(name='userName');   --->  user_name

2) 假設數據表中有字段userName,此時在程式里column的name值不能寫成userName,原因(1)已說明,應該全部改為小寫如:username, 這樣子就可以在不修改數據庫的情況下,增量開發/維護。

     userName  --> @Column(name='username');

package com.dahsing.model; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import jakarta.persistence.OneToMany; import jakarta.persistence.Table; import lombok.Data; import java.util.Date; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; @Entity @Data @Table(name = "MSN_NOA_DATA", schema = "BOSS") public class NOAObject { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "template_provide_date", nullable = false) private Date templateProvideDate; @Column(name = "target_production_deployment_date", nullable = false) private Date targetProductionDeploymentDate; @Column(name = "target_uat_ready_date", nullable = false) private Date targetUATReadyDate; @Column(name = "target_uat_sign_off_date", nullable = false) private Date targetUATSignOffDate; @Column(name = "production_change_submit_time", nullable = false) private Date productionChangeSubmitTime; @OneToMany(mappedBy = "noaObject", orphanRemoval = true) private Set<StatusMapping> statusMappings = new LinkedHashSet<>(); @Column(name = "number_of_response") private int numberOfRespond; // NOA schedule title @Column(name = "scr", nullable = false) private String scr; @Column(name = "desc", nullable = false) private String desc; @Column(name = "template_type") private String templateType; @Column(name = "templateId") private String templateId; @Column(name = "requester", nullable = false) private String requester; @Column(name = "requester_email") private String requesterEmail; @OneToMany(mappedBy = "noaObject", orphanRemoval = true) private List<Task> task; @Column(name = "comment") private String comment; } 2025-07-18T10:18:42.584+08:00 WARN 12568 --- [ restartedMain] o.h.t.s.i.ExceptionHandlerLoggedImpl : GenerationTarget encountered exception accepting comma nd : Error executing DDL "create table boss.msn_noa (id number(19,0) generated as identity, comment varchar2(255 char), desc varchar2(255 char) not null, number_ of_response number(10,0), production_change_submit_time timestamp(6) not null, requester varchar2(255 char) not null, requester_email varchar2(255 char), scr var char2(255 char) not null, target_production_deployment_date timestamp(6) not null, target_uat_ready_date timestamp(6) not null, target_uat_sign_off_date timestam p(6) not null, template_id varchar2(255 char), template_provide_date timestamp(6) not null, template_type varchar2(255 char), primary key (id))" via JDBC [ORA-00904: : invalid identifier ] org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "create table boss.msn_noa (id number(19,0) generated as identity, comment varchar2 (255 char), desc varchar2(255 char) not null, number_of_response number(10,0), production_change_submit_time timestamp(6) not null, requester varchar2(255 char) not null, requester_email varchar2(255 char), scr varchar2(255 char) not null, target_production_deployment_date timestamp(6) not null, target_uat_ready_date tim estamp(6) not null, target_uat_sign_off_date timestamp(6) not null, template_id varchar2(255 char), template_provide_date timestamp(6) not null, template_type varchar2(255 char), primary key (id))" via JDBC [ORA-00904: : invalid identifier
最新发布
07-19
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值