org.hibernate.hql.ast.QuerySyntaxException: продукт не сопоставлен [из продукта] - PullRequest
0 голосов
/ 31 августа 2010

Моя ужасная проблема сегодня такова:

Я пытаюсь использовать Hibernate для доступа к базе данных.После нескольких неудачных попыток я отказался от своего конкретного проекта и решил использовать образец базы данных и мастеров, поставляемых с Netbeans 6.9.

Я запустил Netbeans, запустил образец базы данных Derby и следовал инструкциямв этом уроке: http://netbeans.org/kb/docs/java/hibernate-java-se.html, пропуская бит о базе данных MySQL и подставляя информацию для базы данных Derby sample, где это уместно.

Все мои поиски в Google говорят мне, что я делаю ошибку новичкаи ссылаясь на имя таблицы, а не имя класса.Я убедил себя, что это не так [1].Есть только так много способов обратиться к классу.Кроме этого, я сбит с толку.Я использовал только мастера, я использовал образец базы данных и не могу найти ничего другого, что мог бы испортить.

Я щелкаю правой кнопкой мыши по hibernate.cfg.xml, выбираю Run HQL Query(так же, как в учебнике) и получите исключение в заголовке вопроса выше, когда я выполню запрос from Product

Пожалуйста, помогите мне, прежде чем моя печень выдохнет.

[1] Этогде один из вас докажет, что я неправ.

hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
 <hibernate-configuration>
  <session-factory>
    <property name="hibernate.dialect">org.hibernate.dialect.DerbyDialect</property>
    <property name="hibernate.connection.driver_class">org.apache.derby.jdbc.ClientDriver</property>
    <property name="hibernate.connection.url">jdbc:derby://localhost:1527/sample</property>
    <property name="hibernate.connection.username">app</property>
    <property name="hibernate.connection.password">app</property>
<property name="hibernate.show_sql">true</property>
<mapping resource="sample/db/PurchaseOrder.hbm.xml"/>
<mapping resource="sample/db/Customer.hbm.xml"/>
<mapping resource="sample/db/MicroMarket.hbm.xml"/>
<mapping resource="sample/db/ProductCode.hbm.xml"/>
<mapping resource="sample/db/Product.hbm.xml"/>
<mapping resource="sample/db/Manufacturer.hbm.xml"/>
<mapping resource="sample/db/DiscountCode.hbm.xml"/>
  </session-factory>
</hibernate-configuration>

Product.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated Aug 30, 2010 3:57:50 PM by Hibernate Tools 3.2.1.GA -->
<hibernate-mapping>
  <class name="sample.db.Product" schema="APP" table="PRODUCT">
    <id name="productId" type="int">
      <column name="PRODUCT_ID"/>
      <generator class="assigned"/>
    </id>
    <property name="manufacturerId" type="int">
      <column name="MANUFACTURER_ID" not-null="true"/>
    </property>
    <property name="productCode" type="string">
      <column length="2" name="PRODUCT_CODE" not-null="true"/>
    </property>
    <property name="purchaseCost" type="big_decimal">
      <column name="PURCHASE_COST" precision="12"/>
    </property>
    <property name="quantityOnHand" type="java.lang.Integer">
      <column name="QUANTITY_ON_HAND"/>
    </property>
    <property name="markup" type="big_decimal">
      <column name="MARKUP" precision="4"/>
    </property>
    <property name="available" type="string">
      <column length="5" name="AVAILABLE"/>
    </property>
    <property name="description" type="string">
      <column length="50" name="DESCRIPTION"/>
    </property>
  </class>
</hibernate-mapping>

Product.java

package sample.db;
// Generated Aug 30, 2010 3:57:50 PM by Hibernate Tools 3.2.1.GA


import java.math.BigDecimal;

/**
 * Product generated by hbm2java
 */
public class Product  implements java.io.Serializable {


     private int productId;
     private int manufacturerId;
     private String productCode;
     private BigDecimal purchaseCost;
     private Integer quantityOnHand;
     private BigDecimal markup;
     private String available;
     private String description;

    public Product() {
    }


    public Product(int productId, int manufacturerId, String productCode) {
        this.productId = productId;
        this.manufacturerId = manufacturerId;
        this.productCode = productCode;
    }
    public Product(int productId, int manufacturerId, String productCode, BigDecimal purchaseCost, Integer quantityOnHand, BigDecimal markup, String available, String description) {
       this.productId = productId;
       this.manufacturerId = manufacturerId;
       this.productCode = productCode;
       this.purchaseCost = purchaseCost;
       this.quantityOnHand = quantityOnHand;
       this.markup = markup;
       this.available = available;
       this.description = description;
    }

    public int getProductId() {
        return this.productId;
    }

    public void setProductId(int productId) {
        this.productId = productId;
    }
    public int getManufacturerId() {
        return this.manufacturerId;
    }

    public void setManufacturerId(int manufacturerId) {
        this.manufacturerId = manufacturerId;
    }
    public String getProductCode() {
        return this.productCode;
    }

    public void setProductCode(String productCode) {
        this.productCode = productCode;
    }
    public BigDecimal getPurchaseCost() {
        return this.purchaseCost;
    }

    public void setPurchaseCost(BigDecimal purchaseCost) {
        this.purchaseCost = purchaseCost;
    }
    public Integer getQuantityOnHand() {
        return this.quantityOnHand;
    }

    public void setQuantityOnHand(Integer quantityOnHand) {
        this.quantityOnHand = quantityOnHand;
    }
    public BigDecimal getMarkup() {
        return this.markup;
    }

    public void setMarkup(BigDecimal markup) {
        this.markup = markup;
    }
    public String getAvailable() {
        return this.available;
    }

    public void setAvailable(String available) {
        this.available = available;
    }
    public String getDescription() {
        return this.description;
    }

    public void setDescription(String description) {
        this.description = description;
    }




}

Ответы [ 2 ]

0 голосов
/ 05 марта 2011

У меня была та же проблема - получение [имя_класса] не отображенного исключения из hibernate.

Но одно отличие, которое я обнаружил после прочтения вашего поста, заключается в том, что я не получаю исключение при запуске, если щелкнуть правой кнопкой мыши hibernate.cfg.xml, выберите Run HQL Query из NB.Запрос выполняется без каких-либо ошибок / предупреждений.

Затем я полностью проверил свой код и обнаружил, что в файле config.addClass () в моем коде была ошибка глупая орфография.Исправление, которое решило мою проблему.

0 голосов
/ 31 августа 2010

Кажется, что бегунок Netbeans HQL Query не работает.Я последовал совету Паскаля Тивента, и все работает нормально.

Если кто-то обнаружит, что у него возникла такая же проблема, и исправит его, опубликуйте его здесь, и я отмечу его как ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...