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

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

Spring boot - 在保存對(duì)象時(shí)根據(jù) id 字段保存非 id 字段

Spring boot - 在保存對(duì)象時(shí)根據(jù) id 字段保存非 id 字段

萬(wàn)千封印 2022-01-19 10:38:24
我在 Spring Boot 類中有一個(gè)自動(dòng)增量 id 字段:private long id //or it can be int, does not matter我還有另一個(gè)字段,它必須是唯一的和字母數(shù)字的,在同一個(gè)類中:private String code;該字段將有 6 個(gè)字母數(shù)字(大寫(xiě)或小寫(xiě)無(wú)關(guān))。是否可以在使用這種方法為該類創(chuàng)建新對(duì)象時(shí)自動(dòng)保存該字段?Long.toString("id_field_value",36);實(shí)際上,它給出了:0 -> 01 -> 110 -> A因此,當(dāng)創(chuàng)建第一個(gè)對(duì)象時(shí),id 將為 1。有什么建議嗎?例如,當(dāng)我保存Person對(duì)象時(shí),JPA將id自動(dòng)為 1 - hibarnate。而且我還希望自動(dòng)保存另一個(gè)字段,這取決于id字段。所以,id 是 1,那也string code必須是 1。創(chuàng)建對(duì)象后我應(yīng)該這樣做嗎?喜歡:人 person = personRepository.save(person3); person.setCode(person.getId().toString);//或其他函數(shù)
查看完整描述

2 回答

?
收到一只叮咚

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

你可以試試@PostPersist注解。一旦持久化,您的實(shí)體中就會(huì)有一個(gè) id。就像是:


@PostPersist

private void postPersist() {

    this.setCode( generateMyCode( getId() ) );

}

只要EntityManager使用它就可以正常工作,字段代碼也應(yīng)該保存到數(shù)據(jù)庫(kù)中。


使用 Spring 存儲(chǔ)庫(kù)時(shí),可能需要save()在初始保存后執(zhí)行額外的操作(我不必這樣做,只有默認(rèn)配置),但您應(yīng)該使用您的配置測(cè)試這種方法。


(與 JPA 標(biāo)準(zhǔn)用法相比,Spring 存儲(chǔ)庫(kù)處理持久性上下文的方式有點(diǎn)不同EntityManager。)


查看完整回答
反對(duì) 回復(fù) 2022-01-19
?
呼如林

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

您想要的列似乎code正是該id列,但具有另一種編碼(基數(shù) 36 而不是基數(shù) 10)。

您不需要存儲(chǔ)它,也不需要為此使用持久性注釋:

  • 要閱讀代碼:在實(shí)體上,只需添加一個(gè)getCode()基于id值計(jì)算它的 getter 方法。

  • 對(duì)于按代碼搜索,只需將代碼從基數(shù) 36 轉(zhuǎn)換為基數(shù) 10,然后按 id 搜索。


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

添加回答

舉報(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)