简体   繁体   English

A 类不能转换为 A 类

[英]class A cannot be cast to class A

I'm developing a REST API in Java SpringBoot using Hibernate JPA and SQL Server as database.我正在使用 Hibernate JPA 和 SQL Server 作为数据库在 Java SpringBoot 中开发 REST API。

My app throws the following Exception:我的应用程序引发以下异常:

java.lang.ClassCastException: class com.estrelladekleene.safetycar.dto.DriverDTO cannot be cast to class com.estrelladekleene.safetycar.dto.DriverDTO (com.estrelladekleene.safetycar.dto.DriverDTO is in unnamed module of loader 'app'; com.estrelladekleene.safetycar.dto.DriverDTO is in unnamed module of loader org.springframework.boot.devtools.restart.classloader.RestartClassLoader @47e566be) java.lang.ClassCastException: com.estrelladekleene.safetycar.dto.DriverDTO 类无法转换为 com.estrelladekleene.safetycar.dto.DriverDTO 类(com.estrelladekleene.safetycar.dto.DriverDTO 位于加载程序“app”的未命名模块中; com.estrelladekleene.safetycar.dto.DriverDTO 位于加载程序 org.springframework.boot.devtools.restart.classloader.RestartClassLoader @47e566be 的未命名模块中

The problem appears in the following lines of code问题出现在以下代码行中

public DriverDTO getDriverByPhoneNumber(String phoneNumber) {
    DriverDTO driverDTO= entityManager.createQuery("SELECT d FROM DriverDTO d WHERE d.phoneNumber="+phoneNumber,DriverDTO.class).getSingleResult();
    return driverDTO;
}

This is my DriverDTO class:这是我的 DriverDTO 类:

@Entity
@Table(name = "Driver")

public class DriverDTO {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;

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

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

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

@Column(name = "batteryPercentage")
private Integer batteryPercentage;

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

public DriverDTO() {
}

public DriverDTO(Long id, String phoneNumber, String fullName, String mail, Integer batteryPercentage, String firebaseId) {
    this.id = id;
    this.phoneNumber = phoneNumber;
    this.fullName = fullName;
    this.mail = mail;
    this.batteryPercentage = batteryPercentage;
    this.firebaseId = firebaseId;
}

This is my database Table and as you can see the Columns matches DriverDTO class:这是我的数据库表,如您所见,列与 DriverDTO 类匹配: 在此处输入图像描述

When I do the following I have no problem at all:当我执行以下操作时,我完全没有问题:

public List<DriverDTO> getAllDrivers() {
    List<DriverDTO> driverDTOS = entityManager.createQuery("SELECT d FROM DriverDTO d", DriverDTO.class).getResultList();
    return driverDTOS;
}

I can't seem to do a simple where query.我似乎无法进行简单的 where 查询。 I also tried querying this way: entityManager.find(DriverDTO.class,1);我也尝试过这样查询: entityManager.find(DriverDTO.class,1); and it doesn't work either.它也不起作用。 In my database does exist id=1 row.在我的数据库中确实存在 id=1 行。

在此处输入图像描述

Finally after a lot of research I found that this problem is related to spring dev tools package.最后经过大量研究我发现这个问题与spring dev工具包有关。 My solution was removing the package from my pom.xml that in my case wasn't required.我的解决方案是从我的 pom.xml 中删除在我的情况下不需要的包。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM