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代碼段
「ReciepeModel」類的包名是什麼?顯示其原始代碼行:'package ...' – Andremoniy
@Andremoniy ReciepeModel的包是'com.calicode.model' – tomtomssi
可能你有幾個hibernate cfg文件?例如。一個用於生產,一個用於測試? – Andremoniy