2015-12-24 7 views
1

У меня есть добавить поддержку банки и драйверы JDBC для моего проекта, но до сих пор я получаю ниже исключенияorg.hibernate.exception.SQLGrammarException: не удалось извлечь ResultSet

получать не смог найти Resultset исключение ошибки выполняя команду загрузки: получение sqlgrammerexception

мой конфигурационный файл

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-configuration PUBLIC 
     "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
     "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> 
<hibernate-configuration> 
    <session-factory> 
     <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
     <property name="hibernate.connection.password">1234</property> 
     <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property> 
     <property name="hibernate.connection.username">root</property> 
     <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 

     <mapping class="com.util.Product"/> 
    </session-factory> 
</hibernate-configuration 
entity class 
@Entity 
@Table(name="productdetails") 
public class Product implements Serializable { 

    @Id 
    @Column(name="product-id") 
    private int id; 
    @Column(name="product-name") 
    private String name; 
    @Column(name="product-description") 
    private String description; 
    @Column(name="product-price") 
    private float price; 
    public Product() { 
     super(); 
    } 

    public Product(int id, String name, String description, float price) { 
     super(); 
     this.id = id; 
     this.name = name; 
     this.description = description; 
     this.price = price; 
    } 
    public int getId() { 
     return id; 
    } 
    public void setId(int id) { 
     this.id = id; 
    } 
    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 
    public String getDescription() { 
     return description; 
    } 
    public void setDescription(String description) { 
     this.description = description; 
    } 
    public float getPrice() { 
     return price; 
    } 
    public void setPrice(float price) { 
     this.price = price; 
    } 

} 

public class Executingclass { 
    public static void main(String args[]) { 
     SessionFactory sessionFactory=Hibernateutil.getSessionFactory(); 
     Session session=sessionFactory.openSession(); 
     Product product=(Product)session.get(Product.class, 1); 
     System.out.println(product.getId()); 
     System.out.println(product.getName()); 
     System.out.println(product.getDescription()); 
     System.out.println(product.getPrice()); 


    } 

} 

public class Hibernateutil { 
    static SessionFactory sessionFactory=null; 
    static{ 
     Configuration configuration=new Configuration(); 
     configuration.configure(); 

     ServiceRegistry serviceRegistry=new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build(); 
     sessionFactory=configuration.buildSessionFactory(serviceRegistry); 
    } 

    public static SessionFactory getSessionFactory() { 
     return sessionFactory; 
    } 
} 

Ошибка:

INFO: HHH000327: Error performing load command : org.hibernate.exception.SQLGrammarException: could not extract ResultSet 
Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not extract ResultSet 
    at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:80) 
    at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49) 
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:126) 
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:112) 
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:91) 
    at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.getResultSet(AbstractLoadPlanBasedLoader.java:449) 
    at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeQueryStatement(AbstractLoadPlanBasedLoader.java:202) 
    at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:137) 
    at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:102) 
    at org.hibernate.loader.entity.plan.AbstractLoadPlanBasedEntityLoader.load(AbstractLoadPlanBasedEntityLoader.java:186) 
    at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:4126) 
    at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:503) 
    at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:468) 
    at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:213) 
    at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:275) 
    at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:151) 
    at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1106) 
    at org.hibernate.internal.SessionImpl.access$2000(SessionImpl.java:176) 
    at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.load(SessionImpl.java:2587) 
    at org.hibernate.internal.SessionImpl.get(SessionImpl.java:991) 
    at com.util.Executingclass.main(Executingclass.java:10) 
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'product0_.product' in 'field list' 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
    at java.lang.reflect.Constructor.newInstance(Unknown Source) 
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:404) 
    at com.mysql.jdbc.Util.getInstance(Util.java:387) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:941) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3870) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3806) 
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2470) 
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2617) 
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2550) 
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1861) 
    at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1962) 
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:82) 
    ... 16 more 

пожалуйста, помогите мне в решении этой проблемы Я новичок в спящий режим

ответ

2

В StackTrace, есть линия, которая указывает на проблему:

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'product0_.product' in 'field list' 

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

@Id 
@Column(name="product-id") 
private int id; 
@Column(name="product-name") 
private String name; 
@Column(name="product-description") 
private String description; 
@Column(name="product-price") 
private float price; 

И когда вы видите это вместе с выходом в StackTrace я уже упоминал выше, вы думаете, хорошо, есть не имя столбца product0_.product, ближе всего просто продукт, а затем дефис, может быть, его дефис, что он дает некоторые неприятности.

После того, как я немного разобрался, я нашел это answer из другого вопроса, который указывает, что использование дефиса возможно, но у него есть специальное требование, возможно, спящий режим не имеет отношения к этому правильно.

Чтобы суммировать, попробуйте без дефисов в схеме, в обоих местах, в базе данных и в @Entity.

+0

Я продлил ответ со всем процессом отладки, так как вы новичок в SO, как обратная связь, поэтому у вас есть пример того, как отлаживать будущие проблемы. кстати, добро пожаловать в SO. – saljuama

Смежные вопросы