3

MS SQL で hibernate を使用してオブジェクトを作成したいと思います。このテーブルの名前は「user」です。それは動作しません!。この問題は、テーブル/エンティティの名前、ユーザーがキーワードであることが原因である可能性があると思います。「user」という名前のテーブルを作成するにはどうすればよいですか?

@Entity
@Table(name = "user")
public class User  {
4

2 に答える 2

5

テーブル名を角括弧で囲みます。

@Entity
@Table(name = "[user]")
public class User  {

そうすれば、Hibernate はテーブルを作成するときにそれをエスケープします。原則としてすべてのフィールド名とテーブル名を角括弧で囲むと、マッピングを設定するときに基になる DBMS を考慮する必要がなくなります。

<暴言>あなたがこれをしなければならないことはいつも私を悩ませていました. Hibernate の主要な目標の 1 つは、コードを基礎となるデータベースから分離することです。方言の実装が予約済みキーワードのエスケープを適切に処理しない理由がわかりません。</rant>

参照: Hibernate でのデータベース予約キーワードの使用

于 2013-08-13T13:40:25.600 に答える
1

グレイブ アクセント (`) を使用する必要があります。休止状態でキーワードを使用するには、キーワードの前後に (`) を使用する必要があります。

@Entity
@Table(name = "`user`")
public class CompanyUser extends
于 2013-08-14T09:00:10.713 に答える