java.lang.Object;无法投射到购物篮。产品

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

我正在尝试检索与它们关联的产品列表。在遍历查询结果之后,我希望能够使用products类中的getter/setter,但我知道它不起作用,因为查询没有返回Product的实例

抓取产品的功能:

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