我正在使用hibernate创建表,然后我在应用程序启动时将记录插入表中。
为了插入记录,我正在使用this页
的最后一个示例问题: Hibernate能够创建表,但是当我在应用程序启动时插入记录时,它不会被插入。
另一方面,如果我使用REST服务来执行相同的任务,它的工作完全正常。
这是我的JPA课程。
TestMeRepository
这是相应的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);
}
类。
package com.vizexperts.georbis.config;
import com.vizexperts.georbis.usermanagement.types.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
public class InitialDataConfig implements ApplicationListener<ContextRefreshedEvent>{
@Autowired
TestMeRepository testMeRepository;
@Override
public void onApplicationEvent(final ContextRefreshedEvent event) {
// Here newly saved object is returned as testMe
// when debugging i can see the auto generated **id** for
// testMe object.
TestMe testMe = testMeRepository.save(new TestMe("Test"));
}
}
这就是我插入数据的方式。
@RequestMapping("/georbis/test")
public Response<Void> test(){
testMeRepository.save(new TestMe("working"));
return new Response<>(true, "working");
}
正如我所说,如果我使用以下服务,它可以工作。
search-forward
答案 0 :(得分:0)
我认为原因是您在@Component
课程上缺少InitialDataConfig
注释。
这就是为什么这个类没有注册为bean而且永远不会调用onApplicationEvent
方法的原因。
添加@Component
注释,它应该可以正常工作。
或者,您可以使用CommandLineRunner
,试试这个example。