2016-05-07 120 views
1

我已經創建了一個簡單的Hibernate測試應用程序,但由於某種原因,ReciepeModel未映射。我已經在hibernate.cfg.xml文件中定義了它。我檢查,我有適當的進口import javax.persistence.*;「未映射」與休眠的期望

這裏是試圖運行程序時的異常:

org.hibernate.hql.internal.ast.QuerySyntaxException: ReciepeModel is not mapped [FROM ReciepeModel WHERE idreciepe = :id] 
    at org.hibernate.hql.internal.ast.QuerySyntaxException.generateQueryException(QuerySyntaxException.java:79) 
    at org.hibernate.QueryException.wrapWithQueryString(QueryException.java:103) 
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:218) 
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:142) 
    at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:115) 
    at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:76) 
    at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:150) 
    at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:302) 
    at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:240) 
    at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1907) 
    at com.calicode.connection.Connector$1.process(Connector.java:16) 
    at com.calicode.connection.ConnectionTemplate.createSession(ConnectionTemplate.java:24) 
    at com.calicode.connection.Connector.connect(Connector.java:20) 
    at com.calicode.connection.Connector.main(Connector.java:9) 

我已經創建瞭如下ReciepeModel這是在配置文件中映射:

package com.calicode.model; 

import javax.persistence.*; 

@Entity 
@Table(name = "reciepe") 
public class ReciepeModel { 

    @Id 
    @GeneratedValue 
    @Column(name = "idreciepe") 
    private int idreciepe; 
} 

這裏的hibernate.cfg.xml與ReciepeModel映射:

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE hibernate-configuration SYSTEM 
     "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> 

<hibernate-configuration> 
    <session-factory> 
     <property name="hibernate.bytecode.use_reflection_optimizer">false</property> 
     <property name="hibernate.id.new_generator_mappings">false</property> 
     <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 
     <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
     <mapping class="com.calicode.model.ReciepeModel"/> 
    </session-factory> 
</hibernate-configuration> 

這裏有一個簡單的測試:

public static void main(String[] args) { 
     connect(); 
    } 

    public static void connect() { 
     new ConnectionTemplate() { 
      @Override 
      public void process(Session session) { 
       Query query = session.createQuery("FROM ReciepeModel WHERE idreciepe = :id"); 
       query.setParameter("id", 1); 
      } 
     }.createSession(); 
    } 

我已經江郎才盡了,爲什麼這是行不通的。在經歷了同一主題的其他問題後,我覺得這裏有更大的突破。

EDIT 1添加軟件包的名稱來ReciepeModel代碼段

+0

「ReciepeModel」類的包名是什麼?顯示其原始代碼行:'package ...' – Andremoniy

+0

@Andremoniy ReciepeModel的包是'com.calicode.model' – tomtomssi

+1

可能你有幾個hibernate cfg文件?例如。一個用於生產,一個用於測試? – Andremoniy

回答

0

的問題是固定通過'org.hibernate:hibernate-core:5.1.0.Final'改變搖籃依賴性'org.springframework.boot:spring-boot-starter-data-jpa:1.3.3.RELEASE'

這很好,因爲我將在此項目中使用Spring Boot。