2013-10-04 49 views
0

我不知道爲什麼我不能構建它?他們拋出此異常:org.hibernate.hql.ast.QuerySyntaxException:產品沒有映射[從產品]hibernate映射拋出異常

我的示例代碼:

public Product[] searchProductByCatalog(String catalogid, String keyword) { 
    String sql = "from product where 1"; 

     if (keyword.trim().equals("") == false) { 
      sql += " and product_name like '%" + keyword + "%'"; 
     } 
     if (catalogid.trim().equals("-1") == false) { 
      sql += " and catalog_id = " + Integer.parseInt(catalogid); 
     } 
    try { 

     session.getTransaction().begin(); 
     Query query = session.createQuery(sql); 
     List listProduct = query.list(); 
     Product[] product = new Product[listProduct.size()]; 
     listProduct.toArray(product); 
     session.flush(); 
     session.getTransaction().commit(); 
     return product; 
    } catch (Exception e) { 
     if (session.getTransaction().isActive()) { 
      session.getTransaction().rollback(); 
     } 
     e.printStackTrace(); 
    } 
    return null; 
} 

這是我的映射: 產品映射:

<class name="pojo.Product" table="product" catalog="shoesshopdb"> 
    <id name="idProduct" type="java.lang.Integer"> 
     <column name="id_product" /> 
     <generator class="assigned" /> 
    </id> 
    <many-to-one name="catalog" class="pojo.Catalog" fetch="select" lazy="true"> 
     <column name="catalog_id" /> 
    </many-to-one> 
    <property name="productName" type="string"> 
     <column name="product_name" length="45" /> 
    </property> 
    <property name="date" type="date"> 
     <column name="date" length="10" /> 
    </property> 
    <property name="author" type="string"> 
     <column name="author" length="45" /> 
    </property> 
    <property name="price" type="java.lang.Integer"> 
     <column name="price" /> 
    </property> 
    <property name="linkimage" type="string"> 
     <column name="linkimage" length="45" /> 
    </property> 
</class> 

目錄映射:

<class name="pojo.Catalog" table="catalog" catalog="shoesshopdb"> 
    <id name="idCatalog" type="java.lang.Integer"> 
     <column name="ID_CATALOG" /> 
     <generator class="assigned" /> 
    </id> 
    <property name="catalogName" type="string"> 
     <column name="Catalog_Name" length="45" /> 
    </property> 
    <set name="products" inverse="true"> 
     <key> 
      <column name="catalog_id" /> 
     </key> 
     <one-to-many class="pojo.Product" /> 
    </set> 
</class> 
+0

你能分享你的例外嗎? – Sikorski

+0

org.hibernate.hql.ast.QuerySyntaxException:產品未映射[來自產品] –

回答

0

類名是Product,而不是product。案件事宜。

+0

oh tks ...我無法識別它.... –

+0

抱歉...當我運行此方法時searchProductByCatalog(「1」 ,「」); 他們拋出異常org.hibernate.hql.ast.QuerySyntaxException:意外的AST節點:1靠近第1行,第25列[來自pojo.Product其中1和catalog_id = 1] –

+1

您在代碼中使用的是HQL查詢。在您命名時不是SQL查詢。 HQL使用實體,屬性和關聯。永遠不要表名和列名。 product_name應該是productName。 catalog_id應該是catalog.id。閱讀關於HQL的文檔。看起來你甚至不知道它存在並且與SQL不同。而且,'where 1'不正確(在SQL中,如HQL)。 –

相關問題