第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Hibernate 用 NULL 覆蓋列值?

Hibernate 用 NULL 覆蓋列值?

飲歌長(zhǎng)嘯 2023-07-19 14:58:18
在插入/保存最后一個(gè)元素時(shí),hibernate 會(huì)用 NULL 覆蓋前面元素的 ManyToOne 列。下面是詳細(xì)的描述。我正在創(chuàng)建一些“狀態(tài)”對(duì)象并將它們保存到數(shù)據(jù)庫(kù)中 -        Country usa = new Country ("USA", "330000000");        State mi = new State("MI", "11000000", usa);        State ca = new State("CA", "39900000", usa);        State fl = new State("FL", "21300000", usa);        countryRepository.save(usa);         stateRepository.save(mi);         stateRepository.save(ca);         stateRepository.save(fl);Hibernate 將按預(yù)期將“State”對(duì)象持久保存到數(shù)據(jù)庫(kù)中,直到持久保存最后一個(gè)“State”對(duì)象。這是觸發(fā)以下查詢并向國(guó)家/地區(qū)字段插入空值的地方。2019-09-09 11:45:37.390 DEBUG 9600 --- [  restartedMain] org.hibernate.SQL                        :     update        state     set        country_name=null     where        country_name=?2019-09-09 11:45:37.390 TRACE 9600 --- [  restartedMain] o.h.type.descriptor.sql.BasicBinder      : binding parameter [1] as [VARCHAR] - [USA]因此在數(shù)據(jù)庫(kù)端,它導(dǎo)致country所有先前持久化狀態(tài)(表中的行)的字段被設(shè)置為空。然后它堅(jiān)持最后的狀態(tài) -2019-09-09 11:45:39.649 DEBUG 9600 --- [  restartedMain] org.hibernate.SQL                        :     insert     into        state        (country_name, population, name)     values        (?, ?, ?)2019-09-09 11:45:39.650 TRACE 9600 --- [  restartedMain] o.h.type.descriptor.sql.BasicBinder      : binding parameter [1] as [VARCHAR] - [USA]2019-09-09 11:45:39.650 TRACE 9600 --- [  restartedMain] o.h.type.descriptor.sql.BasicBinder      : binding parameter [2] as [VARCHAR] - [21300000]2019-09-09 11:45:39.650 TRACE 9600 --- [  restartedMain] o.h.type.descriptor.sql.BasicBinder      : binding parameter [3] as [VARCHAR] - [FL]生成的數(shù)據(jù)庫(kù)表如下 - 您可以看到 CA 和 MI 的國(guó)家/地區(qū)名稱為空值,但對(duì)于最后保存的州 FL 卻看不到空值。mysql> select * from state;+------+------------+--------------+| name | population | country_name |+------+------------+--------------+| CA   | 39900000   | NULL         || FL   | 21300000   | USA          || MI   | 11000000   | NULL         |+------+------------+--------------+任何關(guān)于為什么除了最后一個(gè)州之外的每個(gè)州都用空值覆蓋國(guó)家/地區(qū)字段的行為的任何提示。我不期望其他州的國(guó)家/地區(qū)為空值。
查看完整描述

1 回答

?
qq_笑_17

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超7個(gè)贊

如果你有,CascadeType.ALL你不需要做這一切

countryRepository.save(usa); 
stateRepository.save(mi); 
stateRepository.save(ca); 
stateRepository.save(fl);

我建議確保您將這些州添加到您所在國(guó)家的構(gòu)造函數(shù)中的州列表中,然后保留該國(guó)家/地區(qū)。另外,當(dāng)你確實(shí)需要它時(shí),我不會(huì)使用FetchType.EAGER它,而是會(huì)獲取它,因?yàn)樗鼤?huì)導(dǎo)致大量的 SQL 語句


查看完整回答
反對(duì) 回復(fù) 2023-07-19
  • 1 回答
  • 0 關(guān)注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)