2013-10-04 4 views
0

Я не знаю, почему я не могу его построить ?? Они бросают это исключение: org.hibernate.hql.ast.QuerySyntaxException: продукт не отображается [от продукта]hibernate mapping throw exception

Мой Пример кода:

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; 
} 

И это мое отображение: Mapping продукта:

<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 [from pojo.Product где 1 и catalog_id = 1] –

+1

Что вы используете в своем коде - это запрос HQL , Не SQL-запрос, как вы его назвали. И HQL использует сущности, свойства и ассоциации. Никогда не имена таблиц и имена столбцов. product_name должно быть productName. catalog_id должен быть catalog.id. Прочтите документацию по HQL. Кажется, вы даже не знаете, что существует и отличается от SQL. Более того, 'where 1' является неправильным (в HQL, как в SQL). –