2016-09-09 1 views
3

ich eine feder Boot-Projekt mache und zu versuchen, eine Tabelle mit Hibernate zu schaffen, habe ich keine Fehler, wenn ich die App und der Server startet normal laufen, aber die Tabelle nicht erstellt Bekommt .Ruhezustand nicht zu schaffen Tabelle aber keine Fehlermeldungen

StatusUpdate.java

package model; 

import java.util.Date; 

import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 
import javax.persistence.Table; 
import javax.persistence.Temporal; 
import javax.persistence.TemporalType; 
import javax.persistence.PrePersist; 

@Entity 
@Table(name="status_update") 
public class StatusUpdate { 

    @Id 
    @Column(name="id") 
    @GeneratedValue(strategy=GenerationType.AUTO) 
    private Long id; 

    @Column(name="text") 
    private String text; 

    @Column(name="added") 
    @Temporal(TemporalType.TIMESTAMP) 
    private Date added; 

    @PrePersist 
    protected void onCreate() { 
     if (added == null) { 
      added = new Date(); 
     } 
    } 

    public StatusUpdate(String text) { 
     this.text = text; 
    } 

    public StatusUpdate(String text, Date added) { 
     this.text = text; 
     this.added = added; 
    } 

    public Long getId() { 
     return id; 
    } 

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

    public String getText() { 
     return text; 
    } 

    public void setText(String text) { 
     this.text = text; 
    } 

    public Date getAdded() { 
     return added; 
    } 

    public void setAdded(Date added) { 
     this.added = added; 
    } 

    @Override 
    public int hashCode() { 
     final int prime = 31; 
     int result = 1; 
     result = prime * result + ((added == null) ? 0 : added.hashCode()); 
     result = prime * result + ((id == null) ? 0 : id.hashCode()); 
     result = prime * result + ((text == null) ? 0 : text.hashCode()); 
     return result; 
    } 

    @Override 
    public boolean equals(Object obj) { 
     if (this == obj) 
      return true; 
     if (obj == null) 
      return false; 
     if (getClass() != obj.getClass()) 
      return false; 
     StatusUpdate other = (StatusUpdate) obj; 
     if (added == null) { 
      if (other.added != null) 
       return false; 
     } else if (!added.equals(other.added)) 
      return false; 
     if (id == null) { 
      if (other.id != null) 
       return false; 
     } else if (!id.equals(other.id)) 
      return false; 
     if (text == null) { 
      if (other.text != null) 
       return false; 
     } else if (!text.equals(other.text)) 
      return false; 
     return true; 
    } 

} 

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.4.0.RELEASE</version> 
    </parent> 

    <properties> 
     <java.version>1.8</java.version> 
     <tiles.version>3.0.7</tiles.version> 
    </properties> 

    <groupId>com.voja</groupId> 
    <artifactId>spring-boot-tutorial</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.tomcat.embed</groupId> 
      <artifactId>tomcat-embed-jasper</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.tiles</groupId> 
      <artifactId>tiles-core</artifactId> 
      <version>${tiles.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.tiles</groupId> 
      <artifactId>tiles-jsp</artifactId> 
      <version>${tiles.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>jstl</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-devtools</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <version>5.1.38</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-data-jpa</artifactId> 
      <version>1.3.5.RELEASE</version> 
     </dependency> 
    </dependencies> 

    <packaging>war</packaging> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
       <configuration> 
        <executable>true</executable> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

application.properties

debug=true 

spring.datasource.url=jdbc:mysql://localhost:3306/springboottutorial 
spring.datasource.username=springboot 
spring.datasource.password=hello 
spring.datasource.driverClassName=com.mysql.jdbc.Driver 

spring.jpa.hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect 
spring.jpa.generate-ddl=true 
spring.jpa.show-sql=true 

logging.level.org.hibernate.SQL=DEBUG 

Ich habe auch eine gelbe Linie unter dialect in dieser Zeile spring.jpa.hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect die sagt `Frühling .jpa.hibernate.dialect 'ist eine unbekannte Eigenschaft. Meinst du 'spring.jpa.hibernate.ddl-auto' falls das ein Problem sein könnte?

+0

Wie sieht Ihre persistence.xml aus? –

+0

Wie @ 911DidBush erwähnt zeigen Sie bitte Ihre persistence.xml. Der Parameter hbm2ddl.auto ist hier wichtig. –

+0

können Sie 'spring.jpa.show-sql = true' zu' application.properties' hinzufügen, um weitere Protokolle zu sehen. Vielleicht können Sie etwas finden – Patrick

Antwort

0

das Problem gefunden durch eine andere Stelle zu lesen, tatsächlich Es gab ein Problem mit Paketen und Klassen in ihnen, sie konnten sich nicht finden und so wurde die Tabelle nicht erstellt.

machte ich ein neues Projekt und setzte alle Klassen im gleichen Paket und es funktionierte, also werde ich mein bestehendes Projekt, das auf dem in Ordnung bringen.

0

Wenn Sie JPA verwenden und überwintern dann fügen Sie die folgende Eigenschaft in Ihrer application.properties Datei

spring.jpa.hibernate.ddl-auto=update 
+0

keinen Unterschied, noch keine Tabelle und keine Fehler hinzugefügt. – frc

+0

ändern Sie den Dialekt dazu: ** org.hibernate.dialect.MySQLDialect ** –

+0

immer noch nichts ..... – frc

0

Versuchen Zugabe dies Ihr application.properties zu:

spring.jpa.hibernate.ddl-auto=create 
+0

kein Unterschied, noch keine Tabelle und keine Fehler. – frc

0

working Es ist nicht für Sie, weil Sie ihn nicht benutzen, ich meine, JPA erstellt die Datenbank, wenn Bedarf, es zu benutzen. Sie können versuchen, einen Test zu schreiben, der es verwendet, oder ein Rest-Repository hinzufügen, um es auszuprobieren, fügen Sie das einfach Ihrer application.properties hinzu;

spring.jpa.hibernate.ddl-auto=create 

und dann diese Schnittstelle erstellen:

@RepositoryRestResource 
    public interface IStatusRepository extends CrudRepository<StatusUpdate, Long> { 
    } 

Sie müssen auch diese Abhängigkeit;

<dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-data-rest</artifactId> 
    </dependency> 

Es ist einfacher, nur einen Test zu schaffen, aber ich denke, Sie versuchen, einen Rest Web-Service zu bauen, so versuchen, dies funktioniert es, um zu sehen =)

+0

Ich versuche nicht, einen Rest-Web-Service zu erstellen, nur eine einfache Website (nach einem Tutorial). Gibt es etwas, das ich zu "StausUpdate.jjava" hinzufügen könnte, damit es funktioniert? – frc

+0

Ich habe Ihr Projekt erstellt, mit dieser application.properties und es funktioniert einfach gut, Tabelle wird ohne Probleme mit dem gleichen Code erstellt: 'spring.datasource.url = jdbc: mysql: // localhost: 3306/suscripciones? useSSL = false spring.datasource.name = datasource spring.datasource.username = root spring.datasource.password = root spring.jpa.hibernate.ddl-auto = erstellen ' –

+0

ist es in eclipse? Wenn ja, könnten Sie das ganze Projekt zippen und es irgendwo hochladen, damit ich vergleichen kann? – frc

Verwandte Themen