2011-11-18 4 views
1

Je développe une petite application en utilisant Struts, Spring et hibernate3. Mais maintenant, je trouve des problèmes dans l'exécution de requêtes nommées en utilisant HibernateTemplate.Exécuter une requête nommée en utilisant HibernateTemplate

Voici ma classe d'entité, Product.java

@Entity 
@Table(name = "product") 
@NamedQueries({ 
@NamedQuery(name = "Product.findAll", query = "SELECT p FROM Product p"), 
@NamedQuery(name = "Product.findByProductid", query = "SELECT p FROM Product p WHERE p.productid = :productid"), 
@NamedQuery(name = "Product.findByProductname", query = "SELECT p FROM Product p WHERE p.productname = :productname"), 
@NamedQuery(name = "Product.findByProductdesc", query = "SELECT p FROM Product p WHERE p.productdesc = :productdesc"), 
@NamedQuery(name = "Product.findByUnitprice", query = "SELECT p FROM Product p WHERE p.unitprice = :unitprice"), 
@NamedQuery(name = "Product.findByStockquantity", query = "SELECT p FROM Product p WHERE p.stockquantity = :stockquantity")}) 
public class Product implements Serializable { 
private static final long serialVersionUID = 1L; 
@Id 
@Basic(optional = false) 
@Column(name = "productid") 
private Integer productid; 
@Basic(optional = false) 
@Column(name = "productname") 
private String productname; 
@Column(name = "productdesc") 
private String productdesc; 
@Basic(optional = false) 
@Column(name = "unitprice") 
private double unitprice; 
@Basic(optional = false) 
@Column(name = "stockquantity") 
private int stockquantity; 

public Product() { 
} 

public Product(Integer productid) { 
    this.productid = productid; 
} 

public Product(Integer productid, String productname, double unitprice, int stockquantity) { 
    this.productid = productid; 
    this.productname = productname; 
    this.unitprice = unitprice; 
    this.stockquantity = stockquantity; 
} 

public Integer getProductid() { 
    return productid; 
} 

public void setProductid(Integer productid) { 
    this.productid = productid; 
} 

public String getProductname() { 
    return productname; 
} 

public void setProductname(String productname) { 
    this.productname = productname; 
} 

public String getProductdesc() { 
    return productdesc; 
} 

public void setProductdesc(String productdesc) { 
    this.productdesc = productdesc; 
} 

public double getUnitprice() { 
    return unitprice; 
} 

public void setUnitprice(double unitprice) { 
    this.unitprice = unitprice; 
} 

public int getStockquantity() { 
    return stockquantity; 
} 

public void setStockquantity(int stockquantity) { 
    this.stockquantity = stockquantity; 
} 

@Override 
public int hashCode() { 
    int hash = 0; 
    hash += (productid != null ? productid.hashCode() : 0); 
    return hash; 
} 

@Override 
public boolean equals(Object object) { 
    // TODO: Warning - this method won't work in the case the id fields are not set 
    if (!(object instanceof Product)) { 
     return false; 
    } 
    Product other = (Product) object; 
    if ((this.productid == null && other.productid != null) || (this.productid != null && !this.productid.equals(other.productid))) { 
     return false; 
    } 
    return true; 
} 

@Override 
public String toString() { 
    return "com.pojo.Product[productid=" + productid + "]"; 
} 

} 

Voici le DAO, ProductDAO.java

public class ProductDAO extends HibernateDaoSupport{ 

public List listProducts() { 
    return getHibernateTemplate().findByNamedQuery("Product.findAll"); 
} 
} 

Mais quand je lance l'application, je reçois l'exception suivante.

org.springframework.orm.hibernate3.HibernateSystemException: Named query not known: Product.findAll 

Il existe déjà un findNamedQuery méthodolo-() - en classe HibernateTemplate pour exécuter des requêtes nommées. Et les requêtes sont entrées en tant qu'annotations. Dois-je aussi mettre cela dans le fichier de mappage?

Des pensées s'il vous plaît?

Répondre

Questions connexes