Vra

Met Hibernate, kan jy 'n saamgestelde ID skep waar een van die kolomme wat jy na die ID karteer nulwaardes kan hê?

Dit is om te gaan met 'n verouderde tabel wat 'n unieke sleutel het wat nulwaardes kan hê, maar geen primêre sleutel nie.

Ek besef dat ek net 'n nuwe primêre sleutelkolom by die tabel kan voeg, maar ek wonder of daar enige manier is om dit te vermy.

Was dit nuttig?

Oplossing

Geen. Primêre sleutels kan nie nul wees.

Ander wenke

Dit is nie raadsaam. Kan jy 'n oog en kaart wat in plaas gebruik? Jy kan saamvloei gebruik om 'n standaard te voorsien as jy vas met nalatenskap data. Ons het baie van die moeilikheid met saamgestelde sleutels en ek dink nul waardes sal selfs meer probleme veroorsaak.

Vir saamgestelde sleutels (aanvaar dat databasis kan nulls in PKS) jy kan maksimum number_of_cols ^ 2 het - 1 inskrywings wat nulls, (byvoorbeeld vir saamgestelde sleutel van 2 kolomme kan jy 3 rye met in hul primêre sleutel nul, die vierde is die PK sonder nulls).

Hoekom sou jy dit wou doen?Jou saamgestelde ID moet die primêre sleutel van jou tabel karteer, en dit klink nie wys om nulwaardes in 'n sleutel te plaas nie, of hoe?

EDIT: Hiberneer laat nie toe om dit te doen nie;jy kan die eiendom buite die sleutel plaas en die DAO 'n bietjie aanpas om die veld in ag te neem waar nodig

Jy gewoond raak fout maar hiberneer nie in staat wees om die rye met NULL waarde karteer vir saamgestelde kolom om jou Entiteit. Dit beteken dat jy entiteit met nul waardes in gevolg.

Ongelukkig, no. Ek het nie 'n tydelike oplossing te gebruik:

Ek gebruik saamgestelde ID vir die oog (! Nie tafel) waar rye presies kan geïdentifiseer word deur 2 cols (A, B). Hoewel een van die cols (B) kan nul waardes sowel as positiewe heelgetalle. So my tydelike oplossing is dat ek 'n nuwe kol in die oog: "BKey" en na my mening is geskryf asof B is null dan waarde van BKey is -1 anders BKey = B. (Slegs positiewe heelgetalle occour in B en nul). Ek verander ook my saamgestelde id implementering te BKey in plaas van B. gebruik Hoop dit help vir iemand ..

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top