gpt4 book ai didi

java - 如何使所有包对 Hibernate 可见?

转载 作者:行者123 更新时间:2023-11-30 10:10:13 24 4
gpt4 key购买 nike

我正在使用 Spring 引导框架制作 Maven 应用程序。我还使用 Hibernate ORM 技术通过 Postgres 将对象持久化到数据库中。我遇到的一个问题是 Unknown entity: ca.mcgill.ecse321.model.Vehicle 错误,因为 Hibernate 无法“看到”那个类。下面的代码片段显示了我的类层次结构和我的 pom.xml 文件。有没有办法让 Hibernate 寻找模型类?我没有使用 hibernate.cfg.xml 文件。

Class hierarchy

Pom.xml

<groupId>com.example</groupId>
<artifactId>RideSharing-backend</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>RideSharing</name>
<description>Demo project for Spring Boot</description>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.6.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.3.6.Final</version>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>


</project>

最佳答案

有几件事:

  1. 您可以从作为 JPA 的 pom 中删除 Hibernate 依赖项,因为它默认包含 Hibernate 依赖项。所以删除下面:

    <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>5.3.6.Final</version>
    </dependency>
  2. 如果您的主类位于根包 ca.mcgill.ecse321 中,那么 @SpringBootApplication 将自动配置您的实体。

    <
  3. 如果您在根包中没有您的主类,那么在您的主类中然后通过注释扫描实体以放置您的包名称:

    @EntityScan("ca.mcgill.ecse321.model")
    @SpringBootApplication
    public class MyApplication {

    }

关于java - 如何使所有包对 Hibernate 可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52911555/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com