我正在尝试转换来自两个不同类的对象。
我从这样的HQL查询中获取对象:
select F.title, F.length, F.specialFeatures
from Film F
left join F.filmActors X
inner join X.actor A
where A.firstName like 'E%'
该对象来自Actors,Film和FilmActors。
当我尝试投射对象时出现问题:
Film fl = (Film) o;
并显示此错误:
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to sakila.entity.Film
at Formulario_AD04.mostrarResultados(Formulario_AD04.java:76)
如果对象来自
sakila.entity.film
,sakila.entity.Actor
等,该如何投射? 最佳答案
您需要从休眠的query.list()方法中更好地了解结果列表的类型是什么。
如果查询投影很简单,则这是List<Film>
,其中Film
是休眠实体:select F from Film F
但就您而言,您的预测是select S1, S2, S2
其中S1,S2和S3是三个标量(根据consultaActor
中定义的查询)
因此,输出列表的实际类型为List<Object[]>
,因此会出现错误java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to sakila.entity.Film
,您尝试将Object[]
强制转换为Film
,这是非法的。
关于java - 在内部转换具有不同类的对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48963447/