无法将java.lang.Object强制转换为自定义对象
我试图通过强制转换对象引用来获取分配给自定义类的hql查询结果。但它抛出了一个例外。但我看到开发人员将从查询返回的对象引用转换为自定义类引用而没有任何问题 我想要的是 //地址类无法将java.lang.Object强制转换为自定义对象,java,hibernate,Java,Hibernate,我试图通过强制转换对象引用来获取分配给自定义类的hql查询结果。但它抛出了一个例外。但我看到开发人员将从查询返回的对象引用转换为自定义类引用而没有任何问题 我想要的是 //地址类 package car; public class Address { private int addId; private String city; private String country; public String getCity() { return city;
package car;
public class Address {
private int addId;
private String city;
private String country;
public String getCity() {
return city;
}
public int getAddId() {
return addId;
}
public void setAddId(int addId) {
this.addId = addId;
}
public void setCity(String city) {
this.city = city;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
}
//休眠映射
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name = "car.Address" table = "studentAddress">
<id name = "addId">
<generator class = "assigned"/>
</id>
<property name = "city" column = "city"/>
<property name = "country" column = "country" />
</class>
</hibernate-mapping>
发生的异常是:
INFO: HHH000232: Schema update complete
Hibernate: select address0_.city as col_0_0_, address0_.country as col_1_0_ from studentAddress address0_ where address0_.city='Colombo'
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to car.Address
at test.Main.main(Main.java:36)
跟随HQL
select city,country from Address a where a.city = 'Colombo'
选择对象数组的列表。这就是为什么[Ljava.lang.Object;
有关更多详细信息,请参阅问题
在每个数组中,索引0包含字符串city,索引1包含字符串country。使用uniqueResult()
时,结果不再是列表,而只是对象数组。首选Address
时,应选择Address
,如下所示:
Query q = ss.createQuery("select a from Address a where a.city = 'Colombo'" );
Address a2 = (Address)q.uniqueResult();
将错误编辑到您的帖子中。请添加您尝试的代码检查返回的内容了吗?可能是空引用。不,我检查了它是返回对象。当我尝试打印出对象时,它返回对象内存地址,因此它不是空的。问题是我无法将对象转换为地址谢谢你这么正确。你是一个斯韦尔对理解这个问题帮助很大。
Query q = ss.createQuery("select a from Address a where a.city = 'Colombo'" );
Address a2 = (Address)q.uniqueResult();