2016-12-08 8 views
1

私はh2データベースを通して春のセキュリティログインをしようとしています。私は2つのエンティティUserとUserRolesを持っています。彼らは、1つから多くの注釈を介して接続しました。 私のアプリケーションを実行すると、UserRolesテーブルとJoinTableが作成されますが、テーブルユーザーは作成されません。 ユーザエンティティ:Hibernateはh2dbテーブルを作成しません

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

    @Id 
    @Column(name = "username", nullable = false) 
    private String username; 

    @Column(name = "password", nullable = false) 
    private String password; 

    @Column(name = "enabled", nullable = false, columnDefinition = "1") 
    private int enabled; 

    @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL) 
    @JoinTable(name = "USER_ROLE", joinColumns = { 
     @JoinColumn(name = "username")}, inverseJoinColumns = { 
     @JoinColumn(name = "user_role_id")}) 
    private Set<UserRoles> userRoles = new HashSet<UserRoles>(0); 
.... 
} 

UserRolesエンティティ:

@Entity 
@Table(name = "USER_ROLES") 
public class UserRoles { 

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Column(name = "user_role_id") 
    private int user_role_id; 


    @Column(name = "role", nullable = false) 
    private String role; 
... 
     } 

hibernate.config.xml:

<hibernate-configuration> 
     <session-factory> 
      <!-- Database connection settings --> 
      <property name="connection.driver_class">org.h2.Driver</property> 
      <property name="connection.url">jdbc:h2:file:d:\WebProjectDb</property> 
      <property name="connection.username">sa</property> 
      <property name="connection.password"></property> 

      <!-- JDBC connection pool (use the built-in) --> 
      <property name="connection.pool_size">1</property> 

      <!-- SQL dialect --> 
      <property name="dialect">org.hibernate.dialect.H2Dialect</property> 

      <!-- Enable Hibernate's automatic session context management --> 
      <property name="current_session_context_class">thread</property> 

      <!-- Disable the second-level cache --> 
      <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> 

      <!-- Echo all executed SQL to stdout --> 
      <property name="show_sql">false</property> 

      <property name="hbm2ddl.auto">update</property> 

      <mapping class="com.webproject.Courses"/> 
      <mapping class="com.webproject.Users"/> 
      <mapping class="com.webproject.UserRoles"/> 



     </session-factory> 
    </hibernate-configuration> 
+0

おそらく予約語です。 –

+0

私はこの変種を試しました。他の名前でも何も動作しません。 – Papich

答えて

0

Hibernateは、「パスワード」列を持つテーブルを作成することを許可していません。 passworTに名前を変更して問題を解決しました。

1

1.Tryテーブル名を変更します。

2.Youはコンソール

3.TryであなたのSQLクエリをチェックする

<property name="show_sql">true</property> 

プロパティを変更することができますプロパティに<property name="hibernate.hbm2ddl.auto">create</property>

を変更希望このことができます!

+0

エラー:「μ」・「μ」、「< ?、??? °?<?...: "0" 不明なデータ型: "0"; SQL文: create table USERS(username varchar(255)not null、enabled 1 not null、password varchar(255)not null、プライマリキー(ユーザ名))[50004-191] – Papich

関連する問題