【发布时间】:2017-07-27 11:26:33
【问题描述】:
我无法将 JPA ResultSet 转换为 DTO。当我从数据库中获取值,但使用 toString() 方法打印值时,我得到了 ClassCastException:
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.practice.entity.CityEntity
at java.util.ArrayList.forEach(Unknown Source) ~[na:1.8.0_91]
at com.practice.service.CityService.getCities(CityService.java:47) ~[classes/:na]
@Service
public class CityService {
.....
cityListing = cityDAO.citylisting(countryName);
cityResponse.setCityCount(cityListing.size());
cityListing.forEach(s -> {
System.out.println(s);
responseCityList.add(s);
});
@Repository("cityDAO")
public interface CityManipulationDAO extends JpaRepository<CityEntity, Integer>{
@Query("Select a.id, a.name, a.district,a.countrycode, a.population from CityEntity a where a.countrycode.CountryName=:countryName")
//List of cities for particular countries
public List<CityEntity> citylisting(@Param("countryName") String Name);
}
@Entity
@Table(name="city")
public class CityEntity {
@Id
private Integer id;
@Column
private String name;
@ManyToOne(optional=true, fetch=FetchType.LAZY)
@JoinColumn(name="countrycode", referencedColumnName="code")
private CountryEntity countrycode;
@Column
private String district;
@Column
private Integer population;
...
@Override
public String toString() {
return id+","+name+","+district+","+population;
}
}
在调试时,我发现cityListing 正在被填充。
有什么建议吗?
【问题讨论】:
-
cityListing和responseCityList的类型是什么? -
两者的类型都是
List<CityEntity> cityListing -
我猜问题出在您在查询中返回
a.countrycode的位置,它返回的是整个 CountryEntity 对象。
标签: java spring spring-data-jpa