java JPA:实体对象未出现在H2控制台中

hc8w905p  于 2023-04-04  发布在  Java
关注(0)|答案(5)|浏览(127)

在我的Spring应用程序中,我有以下实体:

import lombok.Data;

@Data
@Entity

public class Profile {

    @Id
    @GeneratedValue
    Long id;

    String name;
    String address;
    String description;
    String img;

public Profile(String name, String address, String description, String img) {
        this.name = name;
        this.address = address;
        this.description = description;
        this.img = img;
    }

}
然后repository是:

@Repository
public interface ProfileRepository extends JpaRepository<Profile,Long> {

}

下面是我的pom.xml

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <scope>runtime</scope>
</dependency>
        <dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>runtime</scope>
</dependency>

所以,当我转到h2控制台uri时,我期望:

http://localhost:8080/h2-console/login.do?jsessionid=ae6ba7021a23e0ebb4a4844381546e72

它显示了与对象Profile相关的表。
问题是:* 没有名为“配置文件”的表。*
那么,为什么我没有配置文件表?
application.properties为空
下面是我如何连接到H2

而当我运行我的应用程序时,它说:

[2m2017-06-29 10:07:21.106[0;39m [32m INFO[0;39m [35m51392[0;39m [2m---[0;39m [2m[  restartedMain][0;39m [36morg.hibernate.dialect.Dialect           [0;39m [2m:[0;39m HHH000400: Using dialect: org.hibernate.dialect.H2Dialect
[2m2017-06-29 10:07:21.557[0;39m [32m INFO[0;39m [35m51392[0;39m [2m---[0;39m [2m[  restartedMain][0;39m [36morg.hibernate.tool.hbm2ddl.SchemaExport [0;39m [2m:[0;39m HHH000227: Running hbm2ddl schema export
[2m2017-06-29 10:07:21.557[0;39m [32m INFO[0;39m [35m51392[0;39m [2m---[0;39m [2m[  restartedMain][0;39m [36morg.hibernate.tool.hbm2ddl.SchemaExport [0;39m [2m:[0;39m HHH000230: Schema export complete

所以,看起来,应用程序使数据库的模式。我说的对吗?

q9rjltbz

q9rjltbz1#

你需要在application.properties中设置h2配置写入这些行

spring.h2.console.enabled=true
spring.datasource.url=jdbc:h2:mem:testdb --> whatever url you find when open console
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.hibernate.ddl-auto=create
vulvrdjw

vulvrdjw2#

检查包含注解@SpringBootConfiguration的主类是否位于包的层次结构的根中

0ve6wy6x

0ve6wy6x3#

你也可以通过编写schema.sql文件来实现这一点,该文件创建表,并可以通过将文件放置在src/main/resources位置来加载数据。有很多不同的方法可以做到这一点。我喜欢schema.sql文件,因为它有一些你可以查看和管理的东西。

20jt8wwn

20jt8wwn4#

然后你打开'http://localhost:8080/h2-console',你需要指定'JDBC URL'。默认情况下(我理解你使用默认设置,因为你的application.properties是空的)这个值是:

jdbc:h2:mem:testdb

IMHO H2控制台不是开发人员的最佳选择。您可以直接从IDE使用H2-参见my answer

wz8daaqr

wz8daaqr5#

我也遇到了同样的问题,我通过将实体移动到主应用程序包来解决它。
注意:在主应用程序类上使用@ComponentScan并不能解决这个问题,还需要使用@Configuratin @ComponentScan(basePackages = {“thepackage”})单独的类

相关问题