簡體   English   中英

Spring boot 自動創建數據庫表

[英]Spring boot auto create database tables

我正在開發一個使用 H2、JPA 和 maven 的 Spring Boot 應用程序。 我希望 spring boot 自動創建我的表。 但是,如果我不想將實體類放在放置核心類的地方。 如果我沒有將我的實體類放在我有 @SpringBootApplication 符號的核心包的相同或子包中,那么 spring 不會創建我的表。 我想知道有沒有辦法解決這個問題? 我想將我的實體類放入與 @SpringBootApplication 類不同的包中,並且仍然讓 spring 在 H2 中創建我的表。 請參閱下文。 如您所見,我的實體類在 com.dao 中,而我的 runner 類在 com.core 中。

package com.dao;


import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "method")
public class Method {
@Id
private long id;
private String name;

    // Setters getters
}




package com.core;


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Runner {

    public static void main(String[] args) {
    SpringApplication.run(Runner.class, args);
    System.out.println("Boot");
 }
}
@EntityScan("com.dao")
public class MyConfig {

}

傳統上,JPA“實體”類在persistence.xml 文件中指定。 使用 Spring Boot,這個文件不是必需的,而是使用“實體掃描”。 默認情況下,搜索主配置類(用@EnableAutoConfiguration 或@SpringBootApplication 注釋的那個)下的所有包。

這意味着 com.core.* 將被掃描。 您遇到的問題是使用 com.dao 而不是 com.core.* 的結果。 Spring Boot 沒有任何限制必須在一個包中,通常假設 Application Main 僅存在於根級別。

在spring boot app配置類上使用這個@ComponentScan(basePackages = "app, entities, repository, services") ,實際上告訴spring在哪里掃描組件和@Entity類,如果它們不在相同的子包中打包您的配置文件。

在這個例子中,我們有包含不同種類類的不同包。 包名稱是:應用程序、實體、存儲庫、服務或您已經擁有或想要命名的任何內容。

祝你好運!

我最終在項目中創建表的方式是使用 data.sql 和 schema.sql

在此處輸入圖片說明

您可以添加一個 data.sql ,您可以在其中放置您的表創建

CREATE TABLE IF NOT EXISTS `springsecurity1`.`users` (
`id` INT NOT NULL AUTO_INCREMENT,
`username` VARCHAR(120) NOT NULL,
`enabled` INT NOT NULL,
`password` VARCHAR(120) NOT NULL,
 PRIMARY KEY (`id`),
 UNIQUE INDEX `id_UNIQUE` (`id` ASC) VISIBLE,
 UNIQUE INDEX `username_UNIQUE` (`username` ASC) VISIBLE)
 ENGINE = InnoDB
 DEFAULT CHARACTER SET = utf32
 COLLATE = utf32_bin;

 TRUNCATE table springsecurity1.users;
 insert into springsecurity1.users values (NULL, 'yavdhesh',1,'12345');

啟動 spring 啟動應用程序后。 您也可以在數據庫中找到它。 在此處輸入圖片說明

希望它對某人有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM