无法使用hibernate在表中插入

时间:2016-09-12 16:28:24

标签: java spring hibernate jpa spring-boot

我正在使用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

1 个答案:

答案 0 :(得分:0)

我认为原因是您在@Component课程上缺少InitialDataConfig注释。

这就是为什么这个类没有注册为bean而且永远不会调用onApplicationEvent方法的原因。

添加@Component注释,它应该可以正常工作。

或者,您可以使用CommandLineRunner,试试这个example