java.lang.Object;无法投射到购物篮。产品
我正在尝试检索与它们关联的产品列表。在遍历查询结果之后,我希望能够使用products类中的getter/setter,但我知道它不起作用,因为查询没有返回Product的实例 抓取产品的功能:java.lang.Object;无法投射到购物篮。产品,java,hibernate,hibernate-mapping,Java,Hibernate,Hibernate Mapping,我正在尝试检索与它们关联的产品列表。在遍历查询结果之后,我希望能够使用products类中的getter/setter,但我知道它不起作用,因为查询没有返回Product的实例 抓取产品的功能: public List<Product> getProducts() { factory = (new Configuration()).configure().buildSessionFactory(); Session session = factory.getCurre
public List<Product> getProducts() {
factory = (new Configuration()).configure().buildSessionFactory();
Session session = factory.getCurrentSession();
session.beginTransaction();
List<Product> products = new ArrayList<Product>();
Query query = session.createQuery("from Product p INNER JOIN p.offers");
//The castList is declared and explained at the bottom of listing
List<Product> list = query.list();
Iterator<Product> iter = list.iterator();
while (iter.hasNext()) {
Product product = iter.next();
System.out.println(product);
}
}
提供课程:
public class Offer
{
private Integer offerID;
private String offerDescription;
private String shortDescription;
private Integer TFTPOTGroup;
private Double discountPercentage;
public Integer getOfferID() {
return offerID;
}
public void setOfferID(Integer offerID) {
this.offerID = offerID;
}
//more getters/setters
}
任何帮助都将不胜感激
#潜在不必要的预测数据:
由于您没有在查询中指定SELECT子句并放置显式联接,hibernate将每行返回2个对象(产品、优惠),其中由于基础映射关联,产品对象可能已经填充了优惠数据
尝试将select子句添加到查询中,并查看它是否正确强制转换
Add SELECT p FROM ... to the query
谢谢,我马上就开始工作了。几个小时来一直在折磨我的大脑
public class Product implements java.io.Serializable {
private Integer productID;
private Integer offerID;
private String productName;
private BigDecimal unitPrice;
private Offer offer;
public Integer getProductID() {
return productID;
}
public void setProductID(Integer productID) {
this.productID = productID;
}
public Integer getOfferID() {
return this.offerID;
}
public void setOfferID(Integer offerID) {
this.offerID = offerID;
}
public Offer getOffers() {
return offer;
}
public void setOffers(Offer offer) {
this.offer = offer;
}
//more getters/setters
}
public class Offer
{
private Integer offerID;
private String offerDescription;
private String shortDescription;
private Integer TFTPOTGroup;
private Double discountPercentage;
public Integer getOfferID() {
return offerID;
}
public void setOfferID(Integer offerID) {
this.offerID = offerID;
}
//more getters/setters
Add SELECT p FROM ... to the query