不兼容的类型:java.util.Optional<xyz.app.entity.Users>无法转换为用户(Springboot 编译错误) [英] incompatible types: java.util.Optional&lt;xyz.app.entity.Users&gt; cannot be converted to Users (Springboot compilation error)

查看:58
本文介绍了不兼容的类型:java.util.Optional<xyz.app.entity.Users>无法转换为用户(Springboot 编译错误)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在 spring-boot 应用程序的以下行收到不兼容类型错误消息:

I'm getting an incompatible types error message at the following line in my spring-boot application:

RequestDO request = requestRepository.findOne(requestModel.getRequestId());
Users employee = usersRepository.findOne(request.getUsers().getId());

我以前没有在这种情况下遇到过这个错误.我的应用自大约一个月前首次生产版本以来一直运行成功.

I have not experienced this error in this context before. My app has been running successfully since its first production build about one month ago.

构建失败:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project tmt: Compilation failure: Compilation failure:
[ERROR] /C:/Users/martin/Documents/Web Projects/home.office/src/main/java/xyz/app/controller/UserController.java:[45,45] incompatible types: java.util.Optional<xyz.app.entity.Users> cannot be converted to xyz.app.entity.Users
[ERROR] /C:/Users/martin/Documents/Web Projects/home.office/src/main/java/xyz/app/controller/RequestController.java:[139,54] incompatible types: java.util.Optional<xyz.app.entity.RequestDO> cannot be converted to xyz.app.entity.RequestDO
[ERROR] /C:/Users/martin/Documents/Web Projects/home.office/src/main/java/xyz/app/controller/RequestController.java:[140,49] incompatible types: java.util.app<xyz.app.entity.Users> cannot be converted to xyz.app.entity.Users
[ERROR] /C:/Users/martin/Documents/Web Projects/home.office/src/main/java/xyz/app/controller/RequestController.java:[155,54] incompatible types: java.util.Optional<v.app.entity.RequestDO> cannot be converted to xyz.app.entity.RequestDO
[ERROR] /C:/Users/martin/Documents/Web Projects/home.office/src/main/java/xyz/app/controller/RequestController.java:[157,49] incompatible types: java.util.Optional<xyz.app.entity.Users> cannot be converted to xyz.app.entity.Users

自从我上次成功重建我的项目以来,我没有对代码进行任何更改.这让我相信 springframework Maven 依赖项最近发生了变化,导致我的代码中断.是否可以通过恢复到我的 pom.xml 中的旧快照来测试这一点?另外,可能导致错误的原因是什么?

I have made no code changes since I've last successfully re-built my project. This leads me to believe there has been a recent change in the springframework Maven dependency that has caused my code to break. Is it possible to test this by reverting to an older snapshot in my pom.xml? Also, what could be causing the error?

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>xyz.app</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>

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

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.BUILD-SNAPSHOT</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-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>com.microsoft.sqlserver</groupId>
            <artifactId>sqljdbc4</artifactId>
            <version>4.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <!--<dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc7</artifactId>
            <version>12.1.0.1</version>
        </dependency>-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-ldap</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.directory.server</groupId>
            <artifactId>apacheds-server-jndi</artifactId>
            <version>1.5.5</version>
        </dependency>
        <dependency>
            <groupId>it.ozimov</groupId>
            <artifactId>spring-boot-email-core</artifactId>
            <version>0.4.0</version>
        </dependency>
        <dependency>
            <groupId>it.ozimov</groupId>
            <artifactId>spring-boot-freemarker-email</artifactId>
            <version>0.4.0</version>
        </dependency>
        <dependency>
            <groupId>org.thymeleaf.extras</groupId>
            <artifactId>thymeleaf-extras-springsecurity4</artifactId>
        </dependency>
    </dependencies>

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

    <repositories>
        <repository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>https://repo.spring.io/snapshot</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>https://repo.spring.io/snapshot</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </pluginRepository>
        <pluginRepository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>

</project>

推荐答案

我在使用 2.0.0.BUILD-SNAPSHOT 时遇到了类似的问题,因此除非您正在试验一些低级 spring boot 功能,否则请将版本更改为1.5.2.RELEASE

I had a similar issue using 2.0.0.BUILD-SNAPSHOT, so unless you're experimenting with some low-level spring boot features, change the version to 1.5.2.RELEASE

这篇关于不兼容的类型:java.util.Optional<xyz.app.entity.Users>无法转换为用户(Springboot 编译错误)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆