1

次の状況に遭遇しました。

テーブル名に予約語を使用すべきではないことはわかっていますが、何よりも好奇心から質問しています。

Spring + Hibernate を使用してデータベースを管理しています。Groupというデータベースに新しいモデルを追加しています。したがって、モデルを次のように定義します。

@Entity
@Table(name = "group")
public class Group {
    ...
}

さて、問題は、テーブルを再作成するときに、生成される SQL が次のようになることです。

create table group (...)

残念ながら、これgroupは予約語であるため、MySQL では許可されていません。正しい SQL は次のようになります。

create table `group`(...)

これを行う方法はありますか?

4

2 に答える 2

2

次のようにして、Hibernate に識別子を強制的にエスケープさせることができます。

http://docs.jboss.org/hibernate/core/3.3/reference/en/html/mapping.html#mapping-quotedidentifiers

基本的に、それらを自分で引用することができ、Hibernate は方言に応じて適切な引用技法を使用します。

于 2010-12-09T10:59:58.267 に答える
0

すべてのテーブルにバックティックを追加する、独自の org.hibernate.cfg.NamingStrategy を実装することができます。-- しかし、これは NamingStrategy クラスを悪用していると確信しています。

于 2010-12-09T11:05:20.523 に答える