2016-09-12 2 views
0

Ich benutze Hibernate um Tabelle zu erstellen und dann füge ich die Datensätze in der Tabelle beim Starten der Anwendung.Kann nicht mit Hibernate in Tabelle eingefügt werden

zum Einsetzen der Platte, das ich bin das letzte Beispiel für this Seite mit

Problem: Hibernate ist in der Lage, die Tabellen zu erstellen, aber wenn ich die Datensätze am Start der Anwendung eingefügt wird es nicht eingesetzt zu werden .

Auf der anderen Seite, wenn ich einen REST-Service verwenden, um die gleiche Aufgabe zu tun, funktioniert es einwandfrei.

Hier ist meine JPA-Klasse.

package com.vizexperts.georbis.usermanagement.types; 

import javax.persistence.*; 

@Entity 
public class TestMe { 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    Long Id; 

    @Column 
    String name; 

    public TestMe(String name) { 
     this.name = name; 
    } 

    public Long getId() { 
     return Id; 
    } 

    public void setId(Long id) { 
     Id = id; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 
} 

Hier ist entsprechende TestMeRepository Klasse.

package com.vizexperts.georbis.usermanagement.types; 

import org.springframework.data.repository.CrudRepository; 
import org.springframework.stereotype.Repository; 

@Repository 
public interface TestMeRepository extends CrudRepository<TestMe, Long> { 
    TestMe findByName(String name); 
} 

Und so füge ich die Daten ein.

Und wie gesagt, wenn ich den folgenden Dienst verwende, funktioniert es.

@RequestMapping("/georbis/test") 
    public Response<Void> test(){ 
     testMeRepository.save(new TestMe("working")); 
     return new Response<>(true, "working"); 
    } 
+1

Fehler/Ausnahme beim Start? – VinayVeluri

+0

Verwenden Sie stattdessen 'CommandLineRunner'. –

+0

@VinayVeluri kein Fehler/Ausnahme überhaupt. Methode wird erfolgreich ausgeführt. Sogar '' save'' Methode gibt '' testMe'' Objekt zurück, wo ich das neu gespeicherte Objekt mit automatisch generierter '' ID'' sehe. – Neelesh

Antwort

0

Ich denke, der Grund ist, dass Sie @Component Anmerkung auf Ihrer InitialDataConfig Klasse fehlen.

Und deshalb ist diese Klasse nicht als Bean registriert und onApplicationEvent Methode wird nie aufgerufen.

Fügen Sie die @Component Annotation hinzu, und es sollte gut funktionieren.

Alternativ können Sie CommandLineRunner verwenden, versuchen Sie dies example.

+0

Ich habe '' Component'' Annotation verwendet, habe gerade vergessen, die Frage zu aktualisieren. Immer noch wird nichts in die Tabelle eingefügt. – Neelesh

+0

Eigentlich habe ich den '' CommandLineRunner'' http://nixmash.com/java/using-spring-boot-commandlinerunner/ – Neelesh

+0

Auch '' onApplicationEvent'' und '' run'' Methode im Fall von ' 'CommandLineRunner'' werden beide aufgerufen. – Neelesh

Verwandte Themen