holla开发者,我在用maven做这个基于SpringBoot的应用程序,我有一个奇怪的错误,从来没有发生过
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中检查了从模型Map器导入的内容
<dependency>
<groupId>org.modelmapper</groupId>
<artifactId>modelmapper</artifactId>
<version>2.3.8</version>
</dependency>
尽管运行应用程序正常,但每当我调用引用从我的某个实体检索任何数据的任何端点时,都会发生这种情况。
在我的服务实现中提到模型Map器在我的服务上的使用时,我做了如下工作:
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());
};
}
在这个问题的fomer解决方案中,我试图实现一些其他开发人员的工作,并在我的环境变量中设置系统变量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, fetch = FetchType.LAZY, mappedBy = "restaurantid")
private List<Board> boards;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, 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 + ", name=" + name + ", restaurantDescription=" + restaurantDescription
+ ", restaurantAddress=" + restaurantAddress + ", restaurantImage=" + restaurantImage + ", turns="
+ turns + ", bookings=" + bookings + ", boards=" + boards + "]";
}
}
暂无答案!
目前还没有任何答案,快来回答吧!