2009-05-21 22 views
10

Olası yinelenen olmadan tablo veya görünümü için hazırda eşleme yapmak:
Hibernate and no PKnasıl bir birincil anahtar

Herkes nasıl birincil anahtarı olmadan tablo veya görünümü için eşleme hazırda yapacağını bilir?

+2

bkz çizgisinin üzerinde

  • insert http://stackoverflow.com/questions/767277/hibernate-and-no -pk – Schildmeijer

  • cevap

    10

    Hazırda bekletme, bir ana anahtar olmadan bir tabloyu eşleştirmeye izin vermez ... Hibernate'in bir satırı benzersiz şekilde tanımlayabilen bir sütun olmadan güncelleştirmeleri nasıl gerçekleştireceğini düşünün.

    Bir çalışma, tüm sütunlarla birleşik bir anahtar kullanmak olacaktır, ancak bir birincil anahtar eklemekten daha iyidir.

    +0

    Burada doğru olduğunu düşünüyorum. Ayrıca (tüm sütunların) bileşik anahtarının hala birincil olması gerekir, bu nedenle daha mantıklı bir bileşik anahtar oluşturma veya birincil anahtar olarak benzersiz bir tanımlayıcı sütun seçerek daha iyi yapabilirsiniz. –

    +7

    Salt okunur bir durumda çok önemli olduğunu bilmiyorum (wrt udpates). – javamonkey79

    +4

    Yani, birincil anahtarsız bir görünümden seçtiğimde ve oupdate görünümü istemediğimde ne yapmalıyım? – DeveloperX

    5

    Bunu sadece veri okuyorken yapıyorum (yazmamak). Eğer oracle gibi bir DB var olduğunda,

    select DOKUMENT.*, ROWID from DOKUMENT 
    

    → ifadeleri sahip olabilir ve bu nedenle, sen hazırda eşleme içine bu ifadeyi ekleyebilirsiniz:

    <id column="ROWID" type="string" /> 
    

    sonradan, sen

    gibi tüm diğer sütunları tanımlamak
    <property... 
    

    ters mühendislik Sihirbazı kullandığınızda, can

    1. kompozit anahtar etiketi kaldırmak,
    2. arama ve mülk için anahtar özelliği değiştirip
    +0

    Eklenti/güncelleme kodunuzu buna göre değiştirmeniz gerekecek – ATorras

    İlgili konular