org.hibernate.hql.internal.ast.QuerySyntaxException: table is not mapped

后端 未结 19 1648
滥情空心
滥情空心 2020-12-04 14:59

I have example web application Hibernate 4.3.5 + Derby database 10.10.1.1+ Glassfish4.0 with IDE NetBeans 8.0Beta.

I have the next exception:

Caused          


        
相关标签:
19条回答
  • 2020-12-04 15:23

    I too have faced similar issue when i started to work on Hibernate. All in all i can say is in the createQuery one needs to pass the name of the entity class not the table name to which the entity is mapped to.

    0 讨论(0)
  • 2020-12-04 15:25

    If you are using the JPA annotations to create the entities and then make sure that the table name is mapped along with @Table annotation instead of @Entity.

    Incorrectly mapped :

    @Entity(name="DB_TABLE_NAME")
    public class DbTableName implements Serializable {
       ....
       ....
    }
    

    Correctly mapped entity :

    @Entity
    @Table(name="DB_TABLE_NAME")
    public class DbTableName implements Serializable {
       ....
       ....
    }
    
    0 讨论(0)
  • 2020-12-04 15:27

    Problem partially was solved. Besides creating jdbc/resource(DB Derby) had to create JDBC Connection Pool for db resource in Glassfish admin console, and check it on pinging. Now all CRUD operation work just fine. I check, object Customer in database adding properly, update and delete too. But in Glassfish output log have same exception:

    SEVERE:   org.hibernate.hql.internal.ast.QuerySyntaxException: CUSTOMERV is not mapped [select concat(first_name, ' ', last_name) as name from CUSTOMERV]
        at org.hibernate.hql.internal.ast.QuerySyntaxException.generateQueryException(QuerySyntaxException.java:96)
        at org.hibernate.QueryException.wrapWithQueryString(QueryException.java:120)
        at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:234)
        .......
    
    Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: CUSTOMERV is not mapped
        at org.hibernate.hql.internal.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:189)
        at org.hibernate.hql.internal.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:109)
    
    0 讨论(0)
  • 2020-12-04 15:29

    hibernate.cfg.xml file should have the mapping for the tables like below. Check if it is missing in your file.

    ......
    <hibernate-configuration>
    ......
    ......
      <session-factory>
    ......
    <mapping class="com.test.bean.dbBean.testTableHibernate"/>
    ......
     </session-factory>
    
    </hibernate-configuration>
    .....
    
    0 讨论(0)
  • 2020-12-04 15:29

    Other persons that are using mapping classes for Hibernate, make sure that have addressed correctly to model package in sessionFactory bean declaration in the following part:

    public List<Book> list() {
        List<Book> list=SessionFactory.getCurrentSession().createQuery("from book").list();
        return list;
    }
    

    The mistake I did in the above snippet is that I have used the table name foo inside createQuery. Instead, I got to use Foo, the actual class name.

    public List<Book> list() {                                                                               
        List<Book> list=SessionFactory.getCurrentSession().createQuery("from Book").list();
        return list;
    }
    
    0 讨论(0)
  • in HQL query, Don't write the Table name, write your Entity class name in your query like

    String s = "from Entity_class name";
    query qry = session.createUqery(s);
    
    0 讨论(0)
提交回复
热议问题