2010-01-28 16 views
7

"Grup" adlı bir varlık sınıfım var ve NetBeans beni uyarıyor "Varlık tablosu adı ayrılmış bir Java Kalıcılık QL anahtar kelimesi".JPA ile ayrılmış JPQL anahtar sözcüklerini kullanma

Benzer bir durum, ayrılmış SQL anahtar sözcüklerinin kullanılmasıdır.

Bu ad kaçacak mı? Farklı bir tablo adı kullanılması sorunu @Table (name = "otherName") çözer. Yoksa sınıfı yeniden adlandırmalı mıyım?

cevap

11

Bu isim kaçacak mı?

sağlayıcınız yaparsa, bu özel sağlayıcısıdır, öyle diyor JPA spec içinde şey yoktur.

farklı bir tablo adı kullanılması

Açıkçası sorun @ Tablo (name = "otherName") çözmek istiyorsunuz, o (sürece elbette başka saklıdır anahtar kelime kullanmayın gibi). Eğer bir JPA 2.0 sağlayıcı kullanıyorsanız Fakat eğer kaçan çift tırnak ile, bir db nesne adını almak için standart bir yol yoktur: JPA 1.0 olarak

@Table(name="\"Group\"") 

, sizin JPA sağlayıcısı bağlıdır, hiçbir şey standart yoktur. Örneğin, hazırda komutu ters tırnak kullanır:

@Table(name="`Group`") 

Yoksa sınıfı yeniden adlandırmak gerekir?

sayılı varlık adına bir varlık varsayılan tablo adı ama biz gördüğümüz gibi @Table ek açıklama kullanarak kontrol edebilirsiniz. Dolayısıyla, varlığınızın sınıf adını değiştirmeye gerek yoktur.

+2

Böyle bir alıntı kullanırsanız, herhangi bir birleşim tablosu (OneToMany ilişkileri) oluşturulamaz ("Grup" _Members f.e. geçersiz bir addır). Bu çözüm bir kesmek ve Tablolar için ayrılmış isimleri kullanmamanızı tavsiye ederim. Alan adları daha az sorun yaratır. – Steven

4

Sınıfı yeniden adlandırmanız gerekmiyor - seçmemeniz gerekir - seçtiğiniz ad alanınızı en iyi şekilde yansıtır ve araç veya çerçeve sınırlamaları nedeniyle aracı değiştirmemeniz gerekir./framework, "çatışmayı" önlemek için bir yol sağlar. JPA böyle bir yol sağlar.

+0

Hayır, '@Entity (ad" foo ")' nin ad öğesi başka bir şeydir, JPQL sorgularında kullanılacak adı tanımlamak için kullanılır. Veritabanı nesneleriyle ilgisi var. –

+0

düzeltildi. (15chr) – Bozho