2012-08-10 18 views
18

İki veritabanı var: Forum ve Topic. Topic 'in forumu (Topic)' nin belirtisi olan protected long forumId veri üyesi vardır.JPA: yabancı anahtar ek açıklaması

Sorunuz, bu veri üyesi için hangi ek açıklamanın kullanılacağıdır? Forum sayıda konu vardır ve bir konu ve tek Forumda aittir olarak

+0

'Topic' içinde' forumId 'olduğunu bildirmeniz gerekmez. –

+0

neden böyle diyorsun? Bunun gerekli olduğunu düşünüyorum çünkü konuya hangi forumdan gireceğimi bilmeliyim – socksocket

+1

@socksocket Bence 'Forum' özniteliğine bir açıklama ekleyebilirsin, çünkü bir '@ JoinColumn' notu ile id ekledim, cevabımı gör. ;) – elias

cevap

25

, muhtemelen @ManyToOne ile açıklamalı bir forum türü özellik ile gitmek istiyorum:

@ManyToOne 
@JoinColumn(name = "forumId") 
private Forum forum; 

Daha fazla görüntüle:

açıklama olarak ManyToOne ve JPA mapping

+5

ama "problem", bu durumda, XML veya JSON (örneğin bir istemciye iletmek için) konuya serileştirdiğinizde, tüm Forum nesnesinin de varsayılan olarak serileştirilmesidir. Sunucunuza bir konu yüklerseniz, tüm Topic + Forum nesnelerini iletmeniz gerekir, sadece forum kimliğini kullanamazsınız. Bazı durumlarda, ilgili varlığın yabancı anahtarını manuel olarak eklemek daha kolay görünüyor. – splinter123

1

@ManyToOne ima - Eğer forum

başına birçok konu var
5

Diğerleri cevaplandırdı -
ManyToOne ve JoinColumn ek açıklamalarını kullanmalısınız.
JPA, ORM - Object ilişkisel eşlemeyle ilgili olduğundan,
olduğundan, Java'da "doğal olarak" yaptığınız gibi başka bir nesneyi belirtmeniz gerekir - örneğin, bir nesne aracılığıyla ve kimliğiyle (forumId olan) değil; Sizin durumunuz),
Bu, JPA ve Hazırda Bekletme (daha önce JPA) arasındaki ilişkiler arasındaki tasarım düşüncesinden biriydi.