2016-01-18 107 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类名称。 –

相关问题