Rumah  >  Soal Jawab  >  teks badan

Hibernate pemetaan satu-ke-banyak

Saya cuba menyimpan 6 ulasan dalam jadual Komen pangkalan data menggunakan kunci asing pada id siaran, tetapi 3 ulasan terakhir menimpa 3 ulasan pertama dengan kunci asing yang baru ditambah.

Kategori ujian:

Comments comments = new Comments("1st Comment", new Date(System.currentTimeMillis()));
Comments comments2 = new Comments("2st Comment", new Date(System.currentTimeMillis()));
Comments comments3 = new Comments("3st Comment", new Date(System.currentTimeMillis()));

ArrayList<Comments> arrayList = new ArrayList<>();
arrayList.add(comments);
arrayList.add(comments2);
arrayList.add(comments3);

// Insert Without Comment
Post post1 = new Post("1st Post", "1st Post Description", new ArrayList<Comments>(), new Date(System.currentTimeMillis()));
postReposetory.save(post1);

// Insert With Comment
Post post2 = new Post("2st Post", "2st Post Description", arrayList, new Date(System.currentTimeMillis()));
postReposetory.save(post2);

// Update (Insert Comment)
post1.setComments(arrayList);
post1.setUpdatedAt(new Date(System.currentTimeMillis()));
postReposetory.save(post1);

P粉770375450P粉770375450181 hari yang lalu388

membalas semua(2)saya akan balas

  • P粉038161873

    P粉0381618732024-04-02 11:19:49

    Anda mencipta sejumlah 3 contoh ulasan (jadi 3 rekod dalam jadual pangkalan data) dan bukannya 3 kejadian setiap siaran.

    Apabila anda mengemas kini ulasan post1, anda akan mempunyai ulasan post2 sebagai parameter, jadi kunci asing dari ulasan ke post2 akan bertukar kepada post1.

    Jika anda mahukan 3 ulasan setiap siaran, anda memerlukan 6 contoh ulasan secara keseluruhan (2 siaran * 3 ulasan) .

    balas
    0
  • P粉187677012

    P粉1876770122024-04-02 00:07:37

    Ini berlaku kerana anda meletakkan objek anotasi yang sama dan kemudian hibernate fikir anda mahu menyambungkan anotasi daripada post2 更改为 post1.

    Jadi anda perlu membina semula tiga anotasi ini.

        Comments comments = new Comments("1st Comment", new Date(System.currentTimeMillis()));
        Comments comments2 = new Comments("2st Comment", new Date(System.currentTimeMillis()));
        Comments comments3 = new Comments("3st Comment", new Date(System.currentTimeMillis()));
    
        ArrayList arrayList = new ArrayList<>();
        arrayList.add(comments);
        arrayList.add(comments2);
        arrayList.add(comments3);
    
        // Insert With Comment
        Post post1 = new Post("1st Post", "1st Post Description", new ArrayList(), new Date(System.currentTimeMillis()));
        postReposetory.save(post1);
        
        // Insert Without Comment
        Post post2 = new Post("2st Post", "2st Post Description", arrayList, new Date(System.currentTimeMillis()));
        postReposetory.save(post2);
    
        // Update (Insert Comment)
        comments = new Comments("1st Comment", new Date(System.currentTimeMillis()));
        comments2 = new Comments("2st Comment", new Date(System.currentTimeMillis()));
        comments3 = new Comments("3st Comment", new Date(System.currentTimeMillis()));
        post1.setComments(List.of(comments, comments2, comments3));
        post1.setUpdatedAt(new Date(System.currentTimeMillis()));
        postReposetory.save(post1);
    

    Ini mencipta tiga lagi objek untuk ulasan.

    balas
    0
  • Batalbalas