尝试从端点请求响应时模型映射器出现问题

如何解决尝试从端点请求响应时模型映射器出现问题

Holla开发人员,我使用Maven在Spring-Boot的基础上开发了这个应用程序,而且我遇到了一个奇怪的错误,从未发生过。每当我从Swagger发出请求时,都会收到响应

 Converter org.modelmapper.internal.converter.NumberConverter@471e4a3f failed to convert com.apprestaurant.AppRestaurant.entity.Restaurant to java.lang.Long.
Caused by: org.modelmapper.MappingException: ModelMapper mapping errors:

1) Error mapping
 Restaurant [id=1,name=Gourmet African Food,restaurantDescription=The best of African Food,restaurantAddress=Badalona,Latrilla,7,6,restaurantImage=https://tul.imgix.net/content/article/Glamp_Cocktail_Bar-32.jpg,bookings=[com.apprestaurant.AppRestaurant.entity.Booking@c576b58],boards=[com.apprestaurant.AppRestaurant.entity.Board@90c702d,com.apprestaurant.AppRestaurant.entity.Board@67094136,com.apprestaurant.AppRestaurant.entity.Board@42fcfcbb,com.apprestaurant.AppRestaurant.entity.Board@52511965],turns=[com.apprestaurant.AppRestaurant.entity.Turn@187c981e,com.apprestaurant.AppRestaurant.entity.Turn@4bea963c,com.apprestaurant.AppRestaurant.entity.Turn@7ad329e1,com.apprestaurant.AppRestaurant.entity.Turn@7e8e4b8]] to java.lang.Long

我确实在Pom.xml中检查了从模型映射器的导入

        <dependency>
            <groupId>org.modelmapper</groupId>
            <artifactId>modelmapper</artifactId>
            <version>2.3.8</version>
        </dependency>

尽管可以正常运行该应用程序,但任何时候我只要调用引用获取数据的任何端点即可 从我的一个实体中发生这种情况。

就像在服务实现中一样,在我的服务上同时引用了模型映射器:

FOR THE SERVICE

package com.apprestaurant.AppRestaurant.services;

import java.util.List;

import com.apprestaurant.AppRestaurant.exceptions.AppException;
import com.apprestaurant.AppRestaurant.jsons.RestaurantJson;

public interface RestaurantService {


    List<RestaurantJson>getAllRestaurants()throws AppException;
}

FOR THE SERVICE IMPLEMENTATION
package com.apprestaurant.AppRestaurant.services.implementation;

import java.util.List;
import java.util.stream.Collectors;

import org.modelmapper.ModelMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.apprestaurant.AppRestaurant.entity.Restaurant;
import com.apprestaurant.AppRestaurant.exceptions.AppException;
import com.apprestaurant.AppRestaurant.exceptions.NotFoundException;
import com.apprestaurant.AppRestaurant.jsons.RestaurantJson;
import com.apprestaurant.AppRestaurant.repositories.RestaurantRepository;
import com.apprestaurant.AppRestaurant.services.RestaurantService;


@Service
public class RestaurantServiceImpl implements RestaurantService {

    @Autowired
    RestaurantRepository restaurantRepository;
    
    public static final ModelMapper modelMapper = new ModelMapper();

    
    public List<RestaurantJson> getAllRestaurants() throws AppException {
        final List<Restaurant> restaurant = restaurantRepository.findAll();
        return restaurant.stream().map(service -> modelMapper.map(service,RestaurantJson.class))
                .collect(Collectors.toList());
    }

    }

我的存储库调用该方法将是

package com.apprestaurant.AppRestaurant.repositories;

import java.util.List;
import java.util.Optional;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import com.apprestaurant.AppRestaurant.entity.Restaurant;

@Repository
public interface RestaurantRepository extends JpaRepository<Restaurant,Long> {
    public List<Restaurant> findAll();
}

然后建立端点连接的控制器就这样建立了:

package com.apprestaurant.AppRestaurant.coontrollers;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
import com.apprestaurant.AppRestaurant.exceptions.AppException;
import com.apprestaurant.AppRestaurant.jsons.RestaurantJson;
import com.apprestaurant.AppRestaurant.response.BookingRestaurantResponse;
import com.apprestaurant.AppRestaurant.services.RestaurantService;

@RestController
@CrossOrigin(origins = "http://localhost:4200")
@RequestMapping(path = "/app-restaurant/version1")
public class RestaurantController {

    @Autowired
    RestaurantService restaurantService;

        @ResponseStatus(HttpStatus.OK)
    @RequestMapping(value = "/restaurant/all",method = RequestMethod.GET,produces = MediaType.APPLICATION_JSON_VALUE)
    public BookingRestaurantResponse<List<RestaurantJson>> getAllRestaurantsList() throws AppException {
        return new BookingRestaurantResponse<>("Success",String.valueOf(HttpStatus.OK),"OK",restaurantService.getAllRestaurants());
    };
}

在寻找解决此问题的方法时,我确实尝试实现了其他开发人员的工作,并且在我的环境变量中设置了系统变量a

MAVEN_OPTS= -Xmx1024m -XX:MaxPermSize=128m

但是最终没用。

知道为什么会发生这种情况吗?

PD:我知道已经在这里扩展了暴露的代码,但是我认为有必要,您还可以看到我的实体,以及我将其附加如下的json原因:

RESTAURANT ENTITY
package com.apprestaurant.AppRestaurant.entity;

import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Table(name = "RESTAURANT")

public class Restaurant {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ID",unique = true,nullable = false)
    private Long id;

    @Column(name = "NAME")
    private String name;

    @Column(name = "RESTAURANTDESCRIPTION")
    private String restaurantDescription;

    @Column(name = "RESTAURANTADDRESS")
    private String restaurantAddress;

    @Column(name = "RESTAURANTIMAGE")
    private String restaurantImage;


/////////////////////////// relaciones con demas tablas//////////////////////////////////

    @OneToMany(cascade = CascadeType.ALL,fetch = FetchType.LAZY,mappedBy = "restaurantid")
    private List<Booking> bookings;


    @OneToMany(cascade = CascadeType.ALL,mappedBy = "restaurantid")
    private List<Board> boards;


    @OneToMany(cascade = CascadeType.ALL,mappedBy = "restaurantid")
    private List<Turn> turns;


/////////////////////////////////getters y setters///////////////////////////////////
    public Long getId() {return id;}
    public void setId(Long id) {this.id = id;}
    
    public String getRestaurantDescription() {  return restaurantDescription;}
    public void setRestaurantDescription(String restaurantDescription) {this.restaurantDescription = 
    restaurantDescription;}
    
    public String getRestaurantAddress() {  return restaurantAddress;}
    public void setRestaurantAddress(String restaurantAddress) {this.restaurantAddress =restaurantAddress;}
    
    public String getRestaurantImage() {return restaurantImage; }
    public void setRestaurantImage(String restaurantImage) {this.restaurantImage = restaurantImage; }
    
    public List<Booking> getBookings() {return bookings;}
    public void setBookings(List<Booking> bookings) {   this.bookings = bookings;}
    
    public List<Board> getBoards() {    return boards;}
    public void setBoards(List<Board> boards) { this.boards = boards;}
    
    public List<Turn> getTurns() {  return turns;}
    public void setTurns(List<Turn> turns) {this.turns = turns;}
    
    public String getName() {   return name;}
    public void setName(String name) {  this.name = name;}

    @Override
    public String toString() {
        return "Restaurant [id=" + id + ",name=" + name + ",restaurantDescription=" + restaurantDescription
                + ",restaurantAddress=" + restaurantAddress + ",restaurantImage=" + restaurantImage + ",bookings="
                + bookings + ",boards=" + boards + ",turns=" + turns + "]";
    }
    
    

}

RESTAURANT JSON
package com.apprestaurant.AppRestaurant.jsons;

import java.util.List;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;

@JsonInclude(JsonInclude.Include.NON_NULL)
public class RestaurantJson {

    @JsonProperty("id")
    private Long id;

    @JsonProperty("Name")
    private String name;

    @JsonProperty("restaurantDescription")
    private String restaurantDescription;

    @JsonProperty("restaurantAddress")
    private String restaurantAddress;

    @JsonProperty("restaurantImage")
    private String restaurantImage;

    @JsonProperty("turns")
    private List<TurnJson> turns;

    @JsonProperty("bookings")
    private List<BookingJson> bookings;

    @JsonProperty("tables")
    private List<BoardJson> boards;

    ///////////////////////////// getters y setters/////////////////////////////////////
    public Long getId() {   return id;}
    public void setId(Long id) {this.id = id;}

    public String getRestaurantDescription() {  return restaurantDescription;}
    public void setRestaurantDescription(String restaurantDescription) {this.restaurantDescription = restaurantDescription; }

    public String getRestaurantAddress() {return restaurantAddress;}
    public void setRestaurantAddress(String restaurantAddress) {this.restaurantAddress = restaurantAddress;}

    public String getRestaurantImage() {return restaurantImage;}
    public void setRestaurantImage(String restaurantImage) {this.restaurantImage = restaurantImage; }

    public List<TurnJson> getTurns() {return turns;}
    public void setTurns(List<TurnJson> turns) {this.turns = turns; }

    public List<BookingJson> getBookings() {return bookings;}
    public void setBookings(List<BookingJson> bookings) {this.bookings = bookings;  }

    public List<BoardJson> getBoards() {return boards;  }
    public void setBoards(List<BoardJson> boards) {this.boards = boards;}

    public String getName() {return name;}
    public void setName(String name) {this.name = name;}

    @Override
    public String toString() {
        return "RestaurantJson [id=" + id + ",turns="
                + turns + ",bookings=" + bookings + ",boards=" + boards + "]";
    }
    
    

}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)&gt; insert overwrite table dwd_trade_cart_add_inc &gt; select data.id, &gt; data.user_id, &gt; data.course_id, &gt; date_format(
错误1 hive (edu)&gt; insert into huanhuan values(1,&#39;haoge&#39;); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive&gt; show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 &lt;configuration&gt; &lt;property&gt; &lt;name&gt;yarn.nodemanager.res