0

私のpojoは次のようになります:

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

そこに名前を保持すると、すべてが機能し、休止状態の SQL ログが表示されます。

 create table users (id int8 not null, username varchar(255), primary key (id))

注釈を削除すると、次のようになります。

Hibernate: create table user (id int8 not null, username varchar(255), primary key (id))
19:24:43 [localhost-startStop-23] ERROR o.h.tool.hbm2ddl.SchemaExport - HHH000389: Unsuccessful: create table user (id int8 not null, username varchar(255), primary key (id))
19:24:43 [localhost-startStop-23] ERROR o.h.tool.hbm2ddl.SchemaExport - ERROR: syntax error at or near "user" Position: 14

私のxmlで定義されているので、これを使用しようとしています:

<property name="hibernate.ejb.naming_strategy" value="org.hibernate.cfg.ImprovedNamingStrategy" />

命名戦略が機能しない理由はありますか?

4

2 に答える 2

6

デフォルトのテーブル名USERは予約済みのキーワードです。この場合name、必要なエスケープを追加するには、明示的に指定する必要があります。

@Entity
@Table(name = "`USER`")
public class User { ... }
于 2012-12-03T17:53:42.940 に答える
1

PostgreSQLキーワードのリスト:

http://www.postgresql.org/docs/9.1/static/sql-keywords-appendix.html

「予約済み」というラベルは、列名またはテーブル名として許可されていないトークンです。

そしてあなたのテーブル名:

ユーザー予約

実際には予約されています。

userしたがって、PostgreSQLで名前が付けられたテーブルを作成することはできません。そのため、注釈では名前を指定するため、注釈を使用すればすべて問題ありませんusers。そのようなキーワードはありません。

于 2012-12-03T17:52:23.033 に答える