2016-08-20 82 views
0

夥計!我有非常奇怪的問題休眠5. 我收到線程「主」異常org.hibernate.MappingException:未知實體:com.rosko.Merchandiser當我刪除configuration.addAnnotatedClass(com.rosko.Merchandiser.class)Hibernate錯誤 - org.hibernate.MappingException:未知實體:

HibernateUtil.java

public class HibernateUtil { 

private static final SessionFactory sessionFactory = buildSessionFactory(); 

private static SessionFactory buildSessionFactory() { 
    try { 
     Configuration configuration = new Configuration(); 
     configuration.configure(); 
     /* **With this line, everyting is working..** configuration.addAnnotatedClass(com.rosko.Merchandiser.class);*/ 
     return configuration.buildSessionFactory(
       new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build()); 
    } catch (Exception e) { 
     e.printStackTrace(); 
     throw new RuntimeException("There was an error building the factory"); 
    } 
} 

public static SessionFactory getSessionFactory() { 
    return sessionFactory; 
}} 

Application.java

公共類應用{

public static void main(String[] args) { 


    Session session = HibernateUtil.getSessionFactory().openSession(); 
    session.beginTransaction(); 

    Merchandiser merchant = new Merchandiser(); 

    merchant.setAddress("Viena"); 
    merchant.setName("sadkada"); 

    session.save(merchant);  


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

的hibernate.cfg.xml

<hibernate-configuration> 
<session-factory> 
    <!-- Database connection settings --> 
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property> 
    <property name="connection.url">jdbc:mysql://localhost:3306/finance?serverTimezone=UTC</property> 
    <property name="connection.username">root</property> 
    <property name="connection.password">rozeto90</property> 
    <!-- SQL dialect --> 
    <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property> 
    <!-- Echo all executed SQL to stdout --> 
    <property name="show_sql">true</property> 


     <mapping class="com.rosko.Merchandiser" /> 

</session-factory> 

Merchandiser.java

@Entity 
@Table(name="merchandiser") 
public class Merchandiser { 

@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
private int id; 
@Column(name="name") 
private String name; 

@Column(name= "address") 
private String address; 

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 String getAddress() { 
    return address; 
} 

public void setAddress(String address) { 
    this.address = address; 
} 


} 

我只能使用映射類xml文件?

此致敬禮。

+0

嘗試在調試模式下運行,看是否'configuration.configure()'找到exepcted的hibernate.cfg.xml – davidxxx

回答

0

確保hibernate.cfg.xml的文件名和路徑是正確的。

path = src/main/resources/hibernate.cfg.xml 

也可嘗試使用下面的HibernateUtil類:

import org.hibernate.SessionFactory; 
import org.hibernate.cfg.Configuration; 
import org.hibernate.service.ServiceRegistry; 
import org.hibernate.service.ServiceRegistryBuilder; 

public class HibernateUtil { 
    private static final SessionFactory sessionFactory = buildSessionFactory(); 

    private static SessionFactory buildSessionFactory() { 
     Configuration configuration = new Configuration(); 
     configuration.configure(); 
     ServiceRegistry serviceRegistry = new ServiceRegistryBuilder() 
       .applySettings(configuration.getProperties()) 
       .buildServiceRegistry(); 
     return configuration.buildSessionFactory(serviceRegistry); 
    } 

    public static SessionFactory getSessionFactory() { 
     return sessionFactory; 
    } 

    public static void shutdown() { 
     // Close caches and connection pools 
     getSessionFactory().close(); 
    } 
} 
相關問題