java—有没有办法只在第一次执行时用预设值完全填充一个表?

yptwkmov  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(290)

当hibernate第一次运行时,它会根据实体自动创建表。例如,有这样一个实体:

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;

@Column(name = "name")
private String name;

其默认值为:

1 ------ ok
2 ------ not ok
3 ------ irregular
4 ------ none of the above

当hibernate启动时,是否可以检查此表是否为空,如果为空,则用这些值填充此表?

ego6inou

ego6inou1#

您可以使用数据迁移工具,其中许多工具与springboot集成得非常好。请检查飞行路线。
这些工具将帮助您用默认值初始化数据库。

ghg1uchk

ghg1uchk2#

使用@postconstruct anotation方法创建一个dbinitializer类,然后可以初始化值或将值填充到数据库中,如:

@Service
public class DBInitializer{
private Logger logger = 
LoggerFactory.getLogger(DBInitializer.class)
@Autowired
 ProductRepository productRepo;

@PostConstruct
void init(){
logger.info("Starting Database initialization...")
Product product =new Product();
product.setName("blah");
productRepo.save(product);
  }

  }

相关问题