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

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

Java Hibernate 奇怪的編組錯(cuò)誤?

Java Hibernate 奇怪的編組錯(cuò)誤?

繁星coding 2023-05-10 13:18:33
當(dāng) Spring Data JPA 從數(shù)據(jù)庫(kù)返回?cái)?shù)據(jù)時(shí),我遇到了問(wèn)題。我在這里再試一次。下面是設(shè)置。Spring V 1.5.15.RELEASEPGV 9.5.4查詢語(yǔ)句:CREATE TABLE dmg.gps_user_to_data_set (    group_id int8 NOT NULL,    data_set int4 NOT NULL,    agency_id int8 NOT NULL,    FOREIGN KEY (agency_id) REFERENCES funding_agency(agency_id),    FOREIGN KEY (group_id, data_set) REFERENCES data_set(group_id, data_set))WITH (    OIDS=FALSE) ;回購(gòu):public interface GpsUserToDataSetTestRepository extends JpaRepository<GpsUserToDataSetTest, DataSetPK> {    @Query(value = "select group_id,data_set,agency_id from gps_user_to_data_set where group_id=?1 and data_set=?2", nativeQuery = true)    List<GpsUserToDataSetTest> test(Long groupId, Long dataSet);    @Query(value = "select group_id,data_set,agency_id from gps_user_to_data_set where group_id=?1 and data_set=?2", nativeQuery = true)    List<Object> test2(Long groupId, Long dataSet);}實(shí)體:@Entity@Data@Table(name = "GPS_USER_TO_DATA_SET")public class GpsUserToDataSetTest implements Serializable {    @EmbeddedId    private DataSetPK primaryKey;    @Column(name = "AGENCY_ID")    private Long agencyId;}測(cè)試:System.out.println("ID: "+dataSetPK);System.out.println("YYY : ");gpsUserToDataSetTestRepo.test(dataSetPK.getGroupId(), dataSetPK.getDataSetId()).stream().forEach(e -> {    try {        System.out.println(new ObjectMapper().writeValueAsString(e));    } catch(JsonProcessingException jpe) {    }});System.out.println("ZZZ: ");gpsUserToDataSetTestRepo.test2(dataSetPK.getGroupId(), dataSetPK.getDataSetId()).stream().forEach(e -> {    try {        System.out.println(new ObjectMapper().writeValueAsString(e));    } catch(JsonProcessingException jpe) {    }});所以我運(yùn)行它并得到兩個(gè)不同的結(jié)果,我希望當(dāng)接口 GpsUSerToDataSetTest 時(shí)封裝的信息應(yīng)該與我使用 java.lang.Object 運(yùn)行相同的查詢時(shí)完全相同,但是你可以看到 ids 不一樣,下面是數(shù)據(jù)庫(kù)和標(biāo)準(zhǔn)輸出轉(zhuǎn)儲(chǔ)中的數(shù)據(jù)。我什至不知道在這里說(shuō)什么,這對(duì)我來(lái)說(shuō)似乎很奇怪,并且可能是一個(gè)錯(cuò)誤?D B:group_id |data_set |agency_id |---------|---------|----------|1356     |1        |2         |1356     |1        |2         |1356     |1        |19        |
查看完整描述

1 回答

?
白板的微信

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

如果查詢結(jié)果被捕獲到,List<GpsUserToDataSetTest>對(duì)象test1()GpsUserToDataSetTest ORM 被填充并添加到列表中。因此,JSON轉(zhuǎn)換后的字符串是ORM.

另一方面,當(dāng)查詢結(jié)果被捕獲到其中時(shí),List<Object>這些test2()被填充為純粹的值數(shù)組,然后添加到列表中。因此,JSON表示只有值數(shù)組。

在存儲(chǔ)庫(kù)中編寫一個(gè)新方法test3()并將結(jié)果捕獲到其中List<Map<String, String>>并觀察輸出。您會(huì)注意到字符串中的普通單個(gè)鍵值(沒(méi)有像 primaryKey 等字段)JSON

編輯

此外,由于返回行中的主鍵(@Id 或@EmbeddedId)字段相同,因此從 test1() 返回的所有行都是重復(fù)的。Hibernate 緩存是這里的原因。這不是 Hibernate 中的錯(cuò)誤,而是應(yīng)該修復(fù)數(shù)據(jù)庫(kù)或正確使用 @Id 注釋的數(shù)據(jù)。


查看完整回答
反對(duì) 回復(fù) 2023-05-10
  • 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)