Spring 引导 - javax 导入语句无法正常工作

Spring Boot - javax Import statements not working correctly

我刚开始使用 Spring Boot,目前正在关注内置的 this tutorial with some small modifications to naming and using their own version of Eclipse, which has this generator

当我到达第一段代码时,我尝试只复制 import 语句开始,

import com.fasterxml.jackson.annotation.JsonIgnore;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import java.util.HashSet;
import java.util.Set;

这让我在 javax 导入时出现以下错误:

The import javax.persistence.[insert name here] cannot be resolved

当我找到 javax.persistence 包时,我发现,果然,他们自己的服务提供的起始代码不包含列出的包。我很困惑,想知道我是否在最初的步骤中做错了什么。有人有什么想法吗?

编辑 1:提供的 pom 内容

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.Me</groupId>
<artifactId>petstore</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>petstore</name>
<description>Petstore Project</description>

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

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

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

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

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

添加spring-boot-starter-data-jpa依赖

如果您使用 Maven 添加到 pom.xml

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

如果您使用 Gradle 添加 build.gradle

compile "org.springframework.boot:spring-boot-starter-data-jpa"

其他参考this.

在你里面添加这个依赖pom.xml

<dependency>
    <groupId>org.hibernate.javax.persistence</groupId>
    <artifactId>hibernate-jpa-2.0-api</artifactId>
    <version>1.0.1.Final</version>
</dependency>

之后右键单击您的项目并在 Maven 选项中更新您的项目。这应该可以解决它。

在我的例子中,我在下面添加了 spring 引导数据依赖项,但仍然无法导入 javax.persistence.*

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

我意识到 eclipse 无法将此依赖项添加到我的类路径中。首先,我尝试右键单击项目 Maven>Update Project,但仍然无效。然后我在根目录中执行 mvn eclipse:eclipse ,然后在成功构建后我在 eclipse 中刷新了项目。这次成功了。

我遇到了同样的问题,但以前的解决方案对我不起作用。我确实通过向 POM 文件添加以下依赖项来解决问题。

<!-- https://mvnrepository.com/artifact/javax.persistence/javax.persistence-api -->
<dependency>
    <groupId>javax.persistence</groupId>
    <artifactId>javax.persistence-api</artifactId>
    <version>2.2</version>
</dependency>

请参考文档。 https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.3-Release-Notes

自 #19550 起,Web 和 WebFlux 启动器默认不再依赖于验证启动器。如果您的应用程序正在使用验证功能,例如您发现 javax.validation.* 导入没有被解析,您需要自己添加启动器。

对于 Maven 构建,您可以执行以下操作:

 <dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

对于 Gradle,您需要添加如下内容:

dependencies {
  ...
  implementation 'org.springframework.boot:spring-boot-starter-validation'
}