2017-12-18 297 views
0

我正在使用hibernate。我創建了一個名爲UserDetails(POJO類)的表,其中包含id和name。不過,我發現很難,因爲它給我這個錯誤執行程序 -hibernate給我 - 「主要」org.hibernate.MappingNotFoundException:資源:hibernate_hbm.xml.UserDetails.hbm.xml找不到

Exception in thread "main" org.hibernate.MappingNotFoundException: resource: 
hibernate_hbm.xml.UserDetails.hbm.xml not found 
at org.hibernate.cfg.Configuration.addResource(Configuration.java:740) 
    at 
org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:2197) 
    at 
org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:2169) 
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2149) 
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2102) 
    at org.hibernate.cfg.Configuration.configure(Configuration.java:2017) 
    at hibernate_hbm.xml.A.main(A.java:19) 

所有文件都在 - hibernate_hbm.xml包 - 我的文件有:

[1] UserDetails-

package hibernate_hbm.xml; 


public class UserDetails { 


    private int id; 
    private String name; 

//setter & getters   

} 
包含的UserDetails對象和會話工廠

[2] A.java文件 -

package hibernate_hbm.xml; 

import org.hibernate.Session; 
    import org.hibernate.SessionFactory; 
    import org.hibernate.cfg.Configuration; 

public class A { 

    public static void main(String[] args) { 

    UserDetails user1 = new UserDetails(); 
    user1.setId(101); 
    user1.setName("Mark"); 

    UserDetails user2 = new UserDetails(); 
    user2.setId(102); 
    user2.setName("Cynthiya"); 

    SessionFactory sessionFactory = new Configuration().configure("hibernate.cfg.xml").buildSessionFactory(); 
    Session session = sessionFactory.openSession(); 
    session.beginTransaction(); 
    session.save(user1); 
    session.save(user2); 
    session.getTransaction().commit(); 
    session.close(); 

    } 

} 

[3] hibernate.cfg.xml-

<?xml version="1.0" encoding="UTF-8"?> 
    <!DOCTYPE hibernate-configuration PUBLIC 
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
    "http://hibernate.org/dtd/hibernate-configuration-3.0.dtd"> 
    <hibernate-configuration> 
<session-factory> 
    <property 
    name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
    <property> 
    name="hibernate.connection.url">jdbc:mysql: 
    //localhost:3306/testingcampus</property> 
    <property name="hibernate.connection.username">root</property> 
    <property name="hibernate.connection.password"></property> 
    <property 
    name="hibernate.current_session_context_class">thread</property> 
    <property 
    name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 
    <property name="hibernate.show_sql">true</property> 
    <property name="hbm2ddl.auto">create</property> 
    <mapping resource="hibernate_hbm.xml.UserDetails.hbm.xml" /> 
    </session-factory> 
    </hibernate-configuration> 

[4] UserDetails.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"> 

<hibernate-mapping> 
    <class name="hibernate_hbm.xml.UserDetails" table="UserInfo"> 
    <id name="id"></id> 
    <property name="name"></property> 
</class> 
</hibernate-mapping> 
+0

如果在包「hibernate_hbm.xml」中有一個資源UserDetails.hbm.xml,它的資源路徑應該是'hibernate_hbm/xml/UserDetails.hbm.xml'而不是'hibernate_hbm.xml.UserDetails.hbm.xml'(在'hibernate.cfg.xml'中) –

+0

@Alex我輸入了 - 和hibernate.cfg.xml文件中的。它顯示錯誤 - 引起:org.hibernate.MappingException:找到屬性時找不到類hibernate_hbm.xml.UserDetails.hbm.xml id AND引發:java.lang.ClassNotFoundException:hibernate_hbm.xml.UserDetails.hbm。 xml –

回答

0

作爲該文件是類路徑上嘗試在hibernate.cfg映射資源值.XML如下:

「的classpath:UserDetails.hbm.xml」

<mapping resource="classpath:UserDetails.hbm.xml" /> 

做共享的文件夾structu因爲這將有助於確切的路徑使用

+0

- >文件夾結構是:hibernate_hbm.xml >> src >> hibernate_hbm.xml> A.java> UserDetails.java> UserDetails.hbm.xml –

+0

請使用markdown標籤格式化您的文件夾結構 –

+0

@Alex從Project> hibernate_hbm.xml> src> hibernate3> A.java&UserDetails.java&UserDetails.hbm.xml> hibernate.cfg.xml –