JPAでの予約JPQLキーワードを使用します
質問
私は「グループ」と呼ばれるエンティティクラスを持っており、NetBeansは「実体のテーブル名が予約されるJava Persistence QLのキーワードである」私を警告します。
同様の場合は、予約SQLキーワードの使用であろう。
は、この名前がエスケープされますか?別のテーブル名の使用は問題@Table(名前=「otherName」)を解決するだろう。それとも、私はクラスの名前を変更する必要がありますか?
解決
お使いのプロバイダがない場合は、は、この名前がエスケープされますか?
そう言うJPA仕様で には何もありません、これは、プロバイダ固有のものです。
でしょう別のテーブル名の使用問題を解決@Table(名前=「otherName」)
もちろん、それは(限り、あなたはもちろんの別の予約語を使用しないよう)です。あなたはJPA 2.0プロバイダを使用している場合でも、DBオブジェクト名を取得するための標準的な方法があり、二重引用符で、エスケープします:
@Table(name="\"Group\"")
JPA 1.0では、それはあなたのJPAプロバイダに依存し、何も標準があります。例えば、Hibernateはバッククォートを使用します:
@Table(name="`Group`")
または私はクラスの名前を変更する必要がありますか?
はありません。エンティティ名にエンティティのデフォルトのテーブル名が、我々が見たように、あなたは@Table
アノテーションを使用して、それを制御することができます。あなたのエンティティのクラス名を変更する必要がない。
他のヒント
あなたは、クラスの名前を変更する必要はありません - あなたはいけない - あなたが選択した名前が最善の方法であなたのドメインを反映して、あなたはケースツールで、ためのツールやフレームワークの制限のそれを変更しないでください/フレームワークは、「衝突」を回避する方法を提供します。 JPAは、Aの方法を提供しています。