2015-04-12 6 views
1

Я ожидал, что JPAContainer автоматически создаст таблицу базы данных, когда для параметра 'hbm2ddl.auto' установлено значение 'update', однако это, похоже, не так. Что-то не так в моей конфигурации или я должен использовать что-то еще, чтобы получить желаемую функциональность?JPAContainerFactory не создает таблицу базы данных

Я использую следующую команду, чтобы создать JPAContainer

accounts = JPAContainerFactory.make(Account.class, RumUI.PERSISTENCE_UNIT); 

Класс счетам

@Entity 
@Table(name="accounts")  
public class Account implements Serializable { 
    private static final long serialVersionUID = 1L; 

    @Id 
    @GeneratedValue(generator="increment") 
    @GenericGenerator(name="increment", strategy = "increment") 
    private Long id; 

    @NotNull 
    @Size(min = 2, max = 24) 
    @Column(name = "name", unique=true) 
    private String name; 

    @NotNull 
    @Email 
    @Column(name = "email") 
    private String email; 

    @NotNull 
    @Size(min = 2, max = 24) 
    @Column(name = "password") 
    private String password; 

    @NotNull 
    @Column(name = "role") 
    private String role; 

    public Account() { 
    } 

    //getters and setters 

} 

И persistence.xml

<persistence-unit name="RuM"> 
     <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> 
     <class>ee.ut.cs.rum.domain.Account</class> 
     <properties> 
      <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/> 
      <property name="hibernate.connection.url" value="jdbc:postgresql://127.0.0.1:5432/RuM"/> 
      <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/> 
      <property name="hibernate.connection.username" value="postgres"/> 
      <property name="hibernate.connection.password" value="postgres"/> 
      <property name="hibernate.show_sql" value="true"/> 
      <property name="hibernate.format_sql" value="true"/> 
      <property name="hbm2ddl.auto" value="update"/> 
      <property name="hibernate.current_session_context_class" value="thread" /> 
     </properties> 
    </persistence-unit> 

Я бы ожидать, что в базе данных «учетные записи таблицы» будут создаваться автоматически, так как «hbm2ddl.auto» установлен в «update». Однако таблица не создается.

Если я создаю Hibernate ServiceRegistry и SessionFactory напрямую, используя те же настройки (используя объект Configuration), создается таблица.

Что мне здесь не хватает?

ответ

0

@Entity @Table (имя = "t_accounts) класса сведенью общественности ......

+0

Объект аннотаций были отсутствующими от моего вопроса, но присутствовал в фактическом источнике, в противном случае ServiceRegistry и SessionFactory тоже не сработали бы. Но спасибо вам за внимание. Я отредактировал этот вопрос соответствующим образом. – FableBlaze

+0

Как вы решаете вопрос? Я хочу это узнать.Спасибо! –

+0

Пользователи может выдвигать или понижать предлагаемые решения. Пользователь, который задал вопрос, может выбрать одно из решений как принятое. – FableBlaze

0

org.hibernate.ejb.HibernatePersistence вы можете попробовать этот провайдер

+0

Пробовал и 'hbm2ddl.auto' == 'обновление' по-прежнему игнорируется. Я чувствую, что это спецификация JPAContainer от Vaadin – FableBlaze