2013-08-27 13 views

cevap

28

Onlar tam şema üzerinde aynı görünür ama hazırda Katmanı fark vardır. Eğer böyle bir şey denerseniz

:

Address address = new Address(); 
Order order1 = new Order(); 
order1.setAddress(address); 
Order order2 = new Order(); 
order2.setAddress(address); 
save(); 

Herşey yoluna girecek. Ancak, kaydetmeden sonra kaydetmeyi denerseniz Sipariş'i almayı denerseniz, her iki durumda da farklı görünmelidir.

+0

İki eşleştirmeyi değiştirmek için iyi olmalıyım? –

+1

"İki eşleştirmeyi değiştir" ile ne demek istiyorsun? Eğer veritabanı şemasını varolan ve uygulamanızda haritalama ek açıklama değiştirmeye karar verirseniz (@OneToOne gelen @ManyToOne kadar) şemayı değiştirmeden yapabilirsiniz. Başka bir şekilde de yapabilirsiniz, ancak veri ile sorun olabilir. Gelecekte paulek yayınının herkes için – paulek

+1

: Sizin müteşebbis bu hatayı almaya so_ _just gerekmektedir. Yalnızca tek yönlü ilişkileriniz varsa, bu hata ortaya çıkmaz. İki yönlü ilişkileriniz varsa, yalnızca siparişleri birleştirme ile birlikte adresleri seçmek bu hatayı oluşturur. –

5

normalde address_id benzersiz kısıtlama yalnızca bir sipariş verilen bir adrese sahip olduğunu garanti etmek, bir OneToOne dernek durumunda sütunu katılmak olmalıdır.

+0

Bu, –

+0

durumunda görünmüyor En azından MySQL ile "Unique" tipi bir dizinle yabancı anahtar oluşturur. – borjab

0

Bu ilişkinin her iki tarafın iyi aynı birincil anahtar alarak servis edilir gösterir. Bu makes more sense her iki tarafın bir ve @OneToOne ilişki halinde tek düzen ilişkili olduğundan bu şekilde.

İlgili konular