亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

SpringBoot 填坑 | CentOS7.4 環(huán)境下,MySQL5.7 表時間字段默認(rèn)值設(shè)置失

shinezejian / 1178人閱讀

摘要:店鋪編號加鹽賣家微信創(chuàng)建時間更新時間啟動類至此,問題解決。

微信公眾號:一個優(yōu)秀的廢人
如有問題或建議,請后臺留言,我會盡力解決你的問題。
前言

如題,今天這篇是一個剛認(rèn)識不久的小師弟的投稿。交談中感覺技術(shù)水平與代碼素養(yǎng)非常高,關(guān)鍵是才大二呀。那會我應(yīng)該還在玩泥巴吧,真是后生可畏。

問題描述

我在本地端( windos 端,數(shù)據(jù)庫版本 MySQL5.7、SpringBoot2.1.3、數(shù)據(jù)訪問框架 JPA)測試代碼時 current_timestamp 屬性只要設(shè)有置默認(rèn)值,就會自動生成數(shù)據(jù)的創(chuàng)建時間,與修改數(shù)據(jù)之后的修改時間。但是在 CentOS 服務(wù)器中。調(diào)用 JPA 中 save() 方法。字段卻不會自動生成了。

1、這是其中一張數(shù)據(jù)庫的案例:

CREATE TABLE `user_info`  (
  `id` int(32) NOT NULL AUTO_INCREMENT,
  `username` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `password` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `shop_type` int(11) NULL DEFAULT NULL COMMENT "店鋪編號",
  `salt` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT "鹽",
  `status` int(64) NOT NULL COMMENT "賬號狀態(tài)",
  `openid` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT "微信openid",
  `create_time` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT "創(chuàng)建時間",
  `update_time` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT "修改時間",
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE INDEX `upe_seller_info_username`(`username`) USING BTREE
);

從上面 SQL 示例可以注意到表字段,創(chuàng)建時間和更新時間設(shè)置了默認(rèn)值 CURRENT_TIMESTAMP(0) 。

2、這是發(fā)送的創(chuàng)建用戶請求,里面的邏輯有 save 方法:

3、這是在線上服務(wù)器報的錯誤

問題排查

前面我說了,我已經(jīng)設(shè)置了字段有默認(rèn)值的。。但是為什么在線上服務(wù)器居然沒有自動生成。我百思不得其解,在本地端安然無恙,怎么線上環(huán)境炸了呢?而且我還在日志中發(fā)現(xiàn)一般都是 insert 中會出錯誤。

嘗試解決:首先我在 entity 層中刪除了createtime,updatetime,果然不報空了。但是在我的 freemarker 上又必須有這個字段怎么辦呢?

解決問題

在你的 createtime,updatetime 上分別加上 @CreatedDate 和 @LastModifiedDate 在 entity 類上加注解 @EntityListeners(AuditingEntityListener.class) 還要在你的啟動類加上 @EnableJpaAuditing ,問題迎刃而解。

entity類

@Data
@Entity
@DynamicUpdate // 生成動態(tài)SQL語句,即在插入和修改數(shù)據(jù)的時候,語句中只包括要插入或者修改的字段。
@EntityListeners(AuditingEntityListener.class)
public class UserInfo {
    @Id
    @GeneratedValue
    private Integer id;

    private String username;

    private String password;
    //店鋪編號
    private Integer shopType;
    //加鹽
    private String salt;

    private Integer status;
    //賣家微信openid
    private String openid;
    //創(chuàng)建時間
    @CreatedDate
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") 
    private Date createTime;
    //更新時間
    @LastModifiedDate
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") 
    private Date updateTime;

}

啟動類

@SpringBootApplication
@EnableSwagger2
@EnableJpaAuditing
public class ShipApplication {

    public static void main(String[] args) {
        SpringApplication.run(ShipApplication.class, args);
    }

}

至此,問題解決。

注解解釋

@CreatedDate //表示該字段為創(chuàng)建時間時間字段,在這個實體被insert的時候,會設(shè)置值
@LastModifiedDate //同理
@EntityListeners(AuditingEntityListener.class) // JPA審計
@EnableJpaAuditing//開啟JPA審計
我的思考

我個人的理解是當(dāng)我們添加這些注解后,JPA 的審計功能會把值再重復(fù)設(shè)置進(jìn) createtime,updatetime 這兩個字段里面,第一遍是數(shù)據(jù)庫層默認(rèn)值,第二遍就是代碼層設(shè)置的。

后語

如果本文對你哪怕有一丁點幫助,請幫忙點好看。你的好看是我堅持寫作的動力。

另外,關(guān)注之后在發(fā)送 1024 可領(lǐng)取免費學(xué)習(xí)資料。資料內(nèi)容詳情請看這篇舊文:Python、C++、Java、Linux、Go、前端、算法資料分享

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/73407.html

相關(guān)文章

  • 填坑之旅】Ubuntu16 安裝Jira

    摘要:點擊旁的按鈕,將第步中準(zhǔn)備的文件中內(nèi)容粘貼到展開的輸入框中,然后單擊按鈕。 一、環(huán)境 系統(tǒng):Ubuntu 16 java:java-8-oracle tomcat8: 如何安裝tomcat8 下載安裝包:安裝包下載資源 二、數(shù)據(jù)庫準(zhǔn)備(MySQL5.6) 注意:ubuntu 16 apt-get是MySQL5.7,而Jira6.3.6并不支持MySQL5.7,因此一定要安裝MyS...

    asce1885 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<