我有一个用户实体:
User.java
@Entity
public class user {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@NotNull
@NotBlank
private String firstname;
...
当我第一次部署应用程序时,它将在数据库中创建此表。
我的问题:创建表时,有什么方法可以创建具有名字user
的管理员用户?
答案 0 :(得分:2)
我总是希望避免使用sql脚本,因此我使用CommandLineRunner接口。 这是一个使用spring数据的示例,它不是工作代码:
@Component
public class CommandLineAppStartupRunner implements CommandLineRunner {
@Autowired
UserRepository userRepository;
@Override
public void run(String...args) throws Exception {
User admin = new user(firstName);
userRepository.save(admin);
}
}
在应用启动之前,该类将被执行。
答案 1 :(得分:1)
您可以在src/main/resources/data.sql
中放入以下内容:
INSERT INTO users (firstname, password, enabled)
SELECT 'admin', 'secret', TRUE
WHERE NOT EXISTS (SELECT * FROM users WHERE firstname='admin');
假设您将PostgreSQL用于数据库后端。
由于我不知道您使用的数据库架构是什么,因此您必须修改此查询以匹配您的架构,但是它应该为您提供基本概念。
我认为您甚至不需要为此添加任何配置,因为Spring会自动将其拾取并用于数据库初始化(如果它位于正确的目录中)。
根据another answer to a similar question,在Spring Boot 2.x中,您必须添加以下配置才能使其工作:
spring.datasource.initialization-mode=always