最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解決springboot jpa @Column columnDefinition等屬性失效問(wèn)題

 更新時(shí)間:2021年10月25日 08:52:08   作者:lu的博客  
這篇文章主要介紹了解決springboot jpa @Column columnDefinition等屬性失效問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

jpa @Column columnDefinition屬性失效

刪除一條屬性,默認(rèn)false

#spring.jpa.properties.hibernate.globally_quoted_identifiers=true

原因

開(kāi)啟后, 創(chuàng)建sql語(yǔ)句執(zhí)行時(shí)會(huì)添加'`', 會(huì)造成columnDefinition 屬性失效, author: dreamlu

例如

1.屬性設(shè)置為true

alter table `xxx` add column `xxx` `varchar(50) default ''`
// sql 語(yǔ)法錯(cuò)誤

2.屬性為false

alter table xxx add column xx varchar(50) default ''
// 執(zhí)行成功

可以看出: 有舍有得,第二種要求字段/表等命名不能和mysql或其他數(shù)據(jù)庫(kù)中關(guān)鍵字重名

jpa column注解

知識(shí)點(diǎn)

@Column注解一共有10個(gè)屬性,這10個(gè)屬性均為可選屬性,各屬性含義分別如下:

  • name:name屬性定義了被標(biāo)注字段在數(shù)據(jù)庫(kù)表中所對(duì)應(yīng)字段的名稱(chēng);
  • unique:unique屬性表示該字段是否為唯一標(biāo)識(shí),默認(rèn)為false。如果表中有一個(gè)字段需要唯一標(biāo)識(shí),則既可以使用該標(biāo)記,也可以使用@Table標(biāo)記中的@UniqueConstraint。
  • nullable :nullable屬性表示該字段是否可以為null值,默認(rèn)為true。
  • insertable :insertable屬性表示在使用“INSERT”腳本插入數(shù)據(jù)時(shí),是否需要插入該字段的值。
  • updatable:updatable屬性表示在使用“UPDATE”腳本插入數(shù)據(jù)時(shí),是否需要更新該字段的值。insertable和updatable屬性一般多用于只讀的屬性,例如主鍵和外鍵等。這些字段的值通常是自動(dòng)生成的。
  • columnDefinition :columnDefinition屬性表示創(chuàng)建表時(shí),該字段創(chuàng)建的SQL語(yǔ)句,一般用于通過(guò)Entity生成表定義時(shí)使用。(也就是說(shuō),如果DB中表已經(jīng)建好,該屬性沒(méi)有必要使用。)
  • table :table屬性定義了包含當(dāng)前字段的表名。
  • length :length屬性表示字段的長(zhǎng)度,當(dāng)字段的類(lèi)型為varchar時(shí),該屬性才有效,默認(rèn)為255個(gè)字符。
  • precisionscale :precision屬性和scale屬性表示精度,當(dāng)字段類(lèi)型為double時(shí),precision表示數(shù)值的總長(zhǎng)度,scale表示小數(shù)點(diǎn)所占的位數(shù)。

precision和scale疑點(diǎn)

@Table(name = "CUSTOMERS")
@Entity
public class Customer {
    @Column(name = "ID")
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Id
    private 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;
    ......
}

數(shù)據(jù)庫(kù)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;

小結(jié)一下

1.double類(lèi)型若在columnDefinition屬性中指定數(shù)字類(lèi)型為decimal并指定精度,則最終以columnDefinition為準(zhǔn) (oracle數(shù)據(jù)庫(kù)中除外,其指定為float類(lèi)型,因?yàn)閛racle數(shù)據(jù)庫(kù)沒(méi)有double類(lèi)型,若針對(duì)oracle數(shù)據(jù)庫(kù)進(jìn)行精確,則改為

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

2.double類(lèi)型將在數(shù)據(jù)庫(kù)中映射為double類(lèi)型,precision和scale屬性無(wú)效

3.BigDecimal類(lèi)型在數(shù)據(jù)庫(kù)中映射為decimal類(lèi)型,precision和scale屬性有效

4.precision和scale屬性只在BigDecimal類(lèi)型中有效

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Hibernate實(shí)現(xiàn)many-to-many的映射關(guān)系

    Hibernate實(shí)現(xiàn)many-to-many的映射關(guān)系

    今天小編就為大家分享一篇關(guān)于Hibernate實(shí)現(xiàn)many-to-many的映射關(guān)系,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03
  • springboot跨域CORS處理代碼解析

    springboot跨域CORS處理代碼解析

    這篇文章主要介紹了springboot跨域CORS處理代碼解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • springboot中nacos-client獲取配置的實(shí)現(xiàn)方法

    springboot中nacos-client獲取配置的實(shí)現(xiàn)方法

    本文主要介紹了springboot中nacos-client獲取配置的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Java數(shù)據(jù)結(jié)構(gòu)與算法之二分查找詳解

    Java數(shù)據(jù)結(jié)構(gòu)與算法之二分查找詳解

    這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)與算法之二分查找詳解,二分查找算法是一種在有序數(shù)組中查找某一特定元素的搜索算法,其思想就是不斷地將有序查找表“一分為二”,逐漸縮小搜索區(qū)域,進(jìn)而找到目標(biāo)元素,需要的朋友可以參考下
    2023-12-12
  • 詳解Java的Exception異常機(jī)制

    詳解Java的Exception異常機(jī)制

    Java的Exception異常機(jī)制,為什么會(huì)突然聊到異常?其實(shí)不是突然,而是我已經(jīng)準(zhǔn)備了很久,但苦于沒(méi)有好的例子來(lái)講解,從表象到底層實(shí)現(xiàn),今天就帶大家詳細(xì)了解Exception異常,需要的朋友可以參考下
    2021-05-05
  • springsecurity實(shí)現(xiàn)攔截器的使用示例

    springsecurity實(shí)現(xiàn)攔截器的使用示例

    Spring Security 可以替代攔截器,同時(shí)還可以提供更加細(xì)粒度的權(quán)限控制和身份認(rèn)證,本文就來(lái)介紹一下springsecurity實(shí)現(xiàn)攔截器的使用示例,感興趣的可以了解一下
    2023-10-10
  • jpa實(shí)現(xiàn)多對(duì)多的屬性時(shí)查詢(xún)的兩種方法

    jpa實(shí)現(xiàn)多對(duì)多的屬性時(shí)查詢(xún)的兩種方法

    這篇文章主要介紹了jpa實(shí)現(xiàn)多對(duì)多的屬性時(shí)查詢(xún)的兩種方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java深入淺出說(shuō)流的使用

    Java深入淺出說(shuō)流的使用

    這篇文章主要介紹了Java深入淺出說(shuō)流的使用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • Android Studio中ButterKnife插件的安裝與使用詳解

    Android Studio中ButterKnife插件的安裝與使用詳解

    本篇文章主要介紹了Android Studio中ButterKnife插件的安裝與使用詳解,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 淺談java Properties類(lèi)的使用基礎(chǔ)

    淺談java Properties類(lèi)的使用基礎(chǔ)

    下面小編就為大家分享一篇淺談java Properties類(lèi)的使用基礎(chǔ),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01

最新評(píng)論

麻栗坡县| 辰溪县| 滨州市| 枝江市| 富蕴县| 巴青县| 即墨市| 越西县| 乳源| 武穴市| 中江县| 修文县| 岢岚县| 太湖县| 广水市| 井陉县| 宽城| 东丽区| 马公市| 桓台县| 弥勒县| 万源市| 泸定县| 佛山市| 长乐市| 综艺| 榆中县| 德钦县| 新闻| 历史| 宁武县| 达孜县| 黄骅市| 开阳县| 清水县| 同德县| 淅川县| 张北县| 清涧县| 缙云县| 崇信县|