2015-12-02 4 views
0

Я хочу, чтобы мой контейнер JavaEE создавал или обновлял таблицы автоматически. У меня есть проект EJB, а в качестве Dbms я использую MySQL. Мой сервер приложений - Glassfish. Я использую Hibernate как провайдера. Но таблицы, где не создавать. Если я вручную создаю таблицы, все работает нормально (сохраняются, сливаются, удаляются). Вот мой persistence.xmlEJB с поставщиком Hibernate dosen't create Таблица

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"> 
<persistence-unit name="AVS-WEB" transaction-type="JTA"> 
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> 
    <jta-data-source>jdbc/__avs</jta-data-source> 

    <properties> 
     <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" /> 
     <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/avs" /> 
     <property name="javax.persistence.jdbc.user" value="*****" /> 
     <property name="javax.persistence.jdbc.password" value="******" /> 

     <!--Hibernate properties --> 
     <property name="hibernate.show_sql" value="true" /> 
     <property name="hibernate.format_sql" value="true" /> 
     <property name="hibernate.hbm2ddl.auto" value="update" /> 
     <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" /> 

    </properties> 

</persistence-unit> 
</persistence> 

И это мое исключение, если таблица недоступна.

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Таблица 'avs.kunde' не существует

Вот мой класс Kunde

package de.abs.ejb.bean; 

import java.io.Serializable; 

import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 
import javax.persistence.SequenceGenerator; 
import javax.persistence.Table; 

@Entity 
@Table(name="kunde") 
public class Kunde implements Serializable { 

private static final long serialVersionUID = 1L; 

@Id 
@SequenceGenerator(
     name="KUNDE_ID_GENERATOR", 
     sequenceName="AVS_KUNDE", 
     schema="AVS", 
     allocationSize=1, 
     initialValue=1) 
     @GeneratedValue(
     strategy=GenerationType.SEQUENCE, 
     generator="KUNDE_ID_GENERATOR") 
private Long id; 

private String email; 
private Long kundennummer; 

public Long getId() { 
    return id; 
} 

public void setId(Long id) { 
    this.id = id; 
} 

public String getEmail() { 
    return email; 
} 

public void setEmail(String email) { 
    this.email = email; 
} 

public Long getKundennummer() { 
    return kundennummer; 
} 

public void setKundennummer(Long kundennummer) { 
    this.kundennummer = kundennummer; 
} 


} 

ответ

0

Try в первую вещь, чтобы сделать это изменить update к create в этой строке в файле persistence.xml:

<property name="hibernate.hbm2ddl.auto" value="create" /> 

Th когда ваши таблицы создаются в базе данных, вы можете изменить его для обновления.

+0

Спасибо, теперь это работает! – user3515460

Смежные вопросы