2016-05-02 19 views
2

Ich bin neu in Spring (4.2.5) und JPA und ich habe Probleme mit @PostConstruct konfrontiert. In meinem Projekt habe ich Repositories und ich bin insertng Daten, die sie von @PostConstruct mit und innerhalb init-Methode ..Spring JPA-Repositorys @PostConstruct

@PostConstruct 
    public void init(){ 
    Role roleUser = new Role(); 
    roleUser.setName("ROLE_USER"); 
    roleRepository.save(roleUser); 

    Role roleAdmin = new Role(); 
    roleAdmin.setName("ROLE_ADMIN"); 
    roleRepository.save(roleAdmin); 
} 

ich alle Repositories in applicationContext.xml bin Initialisierung

durch den Aufruf
<context:component-scan base-package="com.shiva.controller"> 
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> 
</context:component-scan> 
<context:annotation-config/> 
<jpa:repositories base-package="com.shiva.repository" entity-manager-factory-ref="emf" /> 

Aber in Logs Tabellen werden erstellt, aber das Problem ist die INSERT-Anweisung wird nicht aufgerufen und ich könnte bezweifeln, dass diese Init-Methode aufgerufen wird.

Dies sind die Protokolle für das Erstellen von Tabellen, aber ich bin nicht Einfügeanweisungen bekommen, was ich von applicationContext.xml genannt ...

Hibernate: drop table if exists Blog 
Hibernate: drop table if exists Item 
Hibernate: drop table if exists Role 
Hibernate: drop table if exists Role_User 
Hibernate: drop table if exists User 
Hibernate: drop table if exists User_Role 
Hibernate: create table Blog (id integer not null auto_increment, name varchar(255), url varchar(255), user_id integer, primary key (id)) 
Hibernate: create table Item (id integer not null auto_increment, description varchar(255), link varchar(255), published_date datetime, title varchar(255), blog_id integer, primary key (id)) 
Hibernate: create table Role (id integer not null auto_increment, name varchar(255), primary key (id)) 
Hibernate: create table Role_User (Role_id integer not null, users_id integer not null) 
Hibernate: create table User (id integer not null auto_increment, email varchar(255), name varchar(255), password varchar(255), primary key (id)) 
Hibernate: create table User_Role (User_id integer not null, roles_id integer not null) 

Können Sie bitte dieses Problem Blick in? Danke im Voraus !!

+0

Can Sie fügen ein Sysout in Ihrer postConstruct-Methode hinzu und sehen, ob diese Methode überhaupt aufgerufen wird oder nicht? –

+0

Ich habe syso in der Methode mit @postConstruct annotiert und es wird nicht aufgerufen :( – shiva

Antwort

3

Vielen Dank für Ihre Antwort ... Problem war in meiner applicationServlet.xml Datei ... Ich änderte den Code die jpaRepositories so zu scannen ..

<jpa:repositories base-package="com.shiva.repository" entity-manager-factory-ref="emf" transaction-manager-ref="txManager" /> 

Ich habe die Referenz von Entity-Manager-Fabrik und transaktions Manager und es funktioniert perfekt für mich :)

0

@PostConstruct aktivieren mit der Handhabung:

<context:annotation-config/> 

Oder

<context:component-scan/> 

Sie hier einen ähnlichen Beitrag finden:

Alle

@PostConstruct method is not called in Spring

+0

meine applicationContext.xml sieht so aus .... Ich habe bereits und .. aber immer noch vor dem gleichen Problem ... shiva

Verwandte Themen