2016-01-18 101 views
0

是的,我在各地都看到過這個問題,但我仍然無法弄清楚我的代碼有什麼問題。當然,我正在俯視一些東西,不能只告訴一下。我當然可以用第二隻眼睛。獲取org.hibernate.MappingException:未知實體:

這是我的POJO。

package hibernate; 

public class User { 
    private int id; 
    private String name; 
    private int total; 
    private int goal; 

    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 int getTotal() { 
     return total; 
    } 
    public void setTotal(int total) { 
     this.total = total; 
    } 
    public int getGoal() { 
     return goal; 
    } 
    public void setGoal(int goal) { 
     this.goal = goal; 
    } 
} 

下面是我的hibernate.cfg.xml

<?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 name=""> 
    <property name="hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property> 
    <property name="hibernate.connection.url">jdbc:sqlserver://localhost:1433;DatabaseName=test;</property> 
    <property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property> 
    <property name="hibernate.connection.username">sa</property> 
    <property name="hibernate.connection.password">admin</property> 

    <mapping resource="hibernate/User.hbm.xml"/> 
</session-factory> 
</hibernate-configuration> 

這裏是我的User.hbm.xml

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<!-- Generated Jan 18, 2016 12:10:00 AM by Hibernate Tools 3.5.0.Final --> 
<hibernate-mapping> 
    <class name="hibernate.User" table="USER"> 
     <id name="id" type="int"> 
      <column name="ID" /> 
      <generator class="native" /> 
     </id> 
     <property name="name" type="java.lang.String"> 
      <column name="NAME" /> 
     </property> 
     <property name="total" type="int"> 
      <column name="TOTAL" /> 
     </property> 
     <property name="goal" type="int"> 
      <column name="GOAL" /> 
     </property> 
    </class> 
</hibernate-mapping> 

這裏是主要的應用程序將上述在一起:

package hibernate; 

import org.hibernate.Session; 
import org.hibernate.SessionFactory; 
import org.hibernate.boot.registry.StandardServiceRegistryBuilder; 
import org.hibernate.cfg.Configuration; 
import org.hibernate.service.ServiceRegistry; 

public class App { 

    private static SessionFactory sessionFactory; 
    private static ServiceRegistry serviceRegistry; 

    public static void main(String[] args) { 
     Configuration configuration = new Configuration().configure(); 
     serviceRegistry = new StandardServiceRegistryBuilder() 
        .applySettings(configuration.getProperties()).build(); 

     sessionFactory = configuration.buildSessionFactory(serviceRegistry); 

     Session session = sessionFactory.openSession(); 
     session.beginTransaction(); 

     User user = new User();  
     user.setName("Joe"); 
     user.setGoal(250); 
     session.save(user); 

     session.getTransaction().commit(); 
     session.close();  
     HibernateUtility.getSessionFactory().close(); 
    } 
} 

當我運行上述,我得到前下面的選項。

Jan 18, 2016 9:34:04 AM org.hibernate.dialect.Dialect <init> 
INFO: HHH000400: Using dialect: org.hibernate.dialect.SQLServerDialect 
Exception in thread "main" org.hibernate.MappingException: Unknown entity: hibernate.User 
    at org.hibernate.internal.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:776) 
    at org.hibernate.internal.SessionImpl.getEntityPersister(SessionImpl.java:1520) 
    at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:100) 
    at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:192) 
    at org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:38) 
    at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:177) 
    at org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:32) 
    at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:73) 
    at org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:679) 
    at org.hibernate.internal.SessionImpl.save(SessionImpl.java:671) 
    at org.hibernate.internal.SessionImpl.save(SessionImpl.java:666) 
    at hibernate.App.main(App.java:27) 

我見過很多人有這個問題,但還沒有能夠找出我的。謝謝你的幫助。

回答

0

您的會話工廠配置是incorrect for Hibernate 5。如果你使用Hibernate 5,您可以通過這種方式

sessionFactory = new Configuration().configure().buildSessionFactory(); 

在該文件中創建一個會話工廠User.hbm.xml你不應該使用的命名空間

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"

使用

"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"

改爲

+0

感謝一堆v.ladynev。如上所示創建sessionFactory的竅門。我將繼續並改變命名空間。謝謝一堆。 –

+0

@AliyuFonyuy歡迎您:) –

0

我認爲錯誤是在這條線:

<class name="hibernate.User" table="USER"> 

變化hibernate.User到用戶,它應該幫助。

+0

Attrib如果在'hibernate-mapping'元素中沒有指定'package'屬性,則'ute'name'必須是完全限定的Java類名稱。 –

相關問題