我正在开发一个使用H2,JPA和Maven的Spring Boot应用程序。我希望Spring Boot自动创建我的表。但是如果我不想把我的 我将我的核心课程放在实体课程中。如果我不将实体类放在我拥有的核心程序包的相同或子程序包中 我的@SpringBootApplication表示法,那么spring不会创建我的表。我想知道有没有办法解决这个问题?我想放 我的实体类与@SpringBootApplication类放在不同的包中,并且仍然可以在Spring中创建我的表。请看下面。 如您所见,我的实体类在com.dao中,而跑步者类在com.core中。
rcs -u motd
答案 0 :(得分:1)
@EntityScan("com.dao")
public class MyConfig {
}
答案 1 :(得分:0)
在Spring Boot应用程序配置类上使用此@ComponentScan(basePackages = "app, entities, repository, services")
,以实际告诉Spring在何处扫描组件和@Entity
类(如果它们不在配置文件的同一包的子包中)在里面。
在此示例中,我们有包含不同种类的类的不同软件包。程序包名称为:应用程序,实体,存储库,服务,或您已经拥有或想要为其命名的任何名称。
祝你好运!
答案 2 :(得分:0)
传统上,JPA“实体”类是在persistence.xml文件中指定的。在Spring Boot中,此文件不是必需的,而是使用“实体扫描”。默认情况下,将搜索主配置类(用@EnableAutoConfiguration或@SpringBootApplication注释的一个)下的所有软件包。
这将转换为com.core。*将被扫描。您遇到的问题是使用com.dao而不是com.core。*的结果。绝对没有将Spring Boot放在一个软件包中的限制,并且通常假定Application Main仅存在于根级别。
答案 3 :(得分:0)
我最终在项目中创建表的方式是使用 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 Boot 应用程序后。您也可以在数据库中找到它。
希望对大家有用。