当前,我有一个import.sql,用于将一些测试数据导入数据库中。现在,我想将其引入我们的生产系统,到目前为止,我读到的是我不应该在生产中使用import.sql。
因此,我想我可以使用@Postconstruct创建一些东西。
因此,我在主应用程序类中创建了以下内容:
@Autowired
ICreateUserAtStartup repo;
@PostConstruct
public void initIt() throws Exception {
Rolle r = new Rolle();
r.setBezeichnung("xxx");
r.setId(1L);
r.setCreatedAt(new Date(2019, 01, 14));
repo.insertRolle(1L, "xxx");
}
在一个单独的文件中,我创建了以下界面:
@Repository
public interface ICreateUserAtStartup {
@Modifying
@Query("insert into benutzer(id, created_at, anzeigename,
benutzername, dienstnummer, active, passwort) SELECT :id,
:created_At, :anzeigename, :benutzername, :dienstnummer, :active,
:passwort")
void insertBenutzer(@Param("id") Long id, @Param("created_at")
String created_at, @Param("anzeigename") String anzeigename,
String benutzername, String dienstnummer, Boolean active, String password);
@Modifying
@Query("insert into rolle(id, bezeichnung) SELECT (:id,
:bezeichnung)")
void insertRolle(@Param("id") Long id, @Param("bezeichnung")
String bezeichnung);
}
但是,一旦我尝试在主类中自动连接回购协议,我总是会遇到以下异常:
没有可用的'x.y.z.repository.ICreateUserAtStartup'类型的合格Bean
答案 0 :(得分:1)
为什么您不为此目的而仅使用特定的迁移工具,例如Flyway或Liquibase?
不能自动装配的原因是您尚未实现该接口,也未从实现中创建bean。当然,您可能会认为,如果仅创建一个接口并使用@Repository
对其进行批注,那么它将立即可用,但事实并非如此。
如果要将Spring Data用于存储库层,则需要一个实体,并且至少需要扩展CrudRepository
。
https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories