【发布时间】:2016-05-02 08:39:17
【问题描述】:
我是 Spring (4.2.5) 和 JPA 的新手,我面临与 @PostConstruct 相关的问题。在我的项目中,我编写了存储库,并使用 @PostConstruct 和 init 方法向它们插入数据。
@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);
}
我正在通过调用 applicationContext.xml 来初始化所有存储库
<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" />
但在日志中表正在创建但问题是插入语句 没有被调用,我可能怀疑这个 init 方法是否被调用。
这些是创建表的日志,但我没有得到我从 applicationContext.xml 调用的插入语句:
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)
我该如何调查这个问题?
【问题讨论】:
-
您能否在您的 postConstruct 方法中添加一个 sysout 并查看该方法是否被调用?
-
我在用@postConstruct 注释的方法中做了syso,但它没有被调用:(
标签: spring hibernate spring-mvc jpa spring-orm