2016-08-20 4 views
0

남자! 나는 최대 절전 모드 5에서 매우 이상한 문제가있다. 스레드 "main"에서 예외가 발생한다. org.hibernate.MappingException : 알 수없는 엔티티 : com.rosko.Merchandiser configuration.addAnnotatedClass (com.rosko.Merchandiser.class)를 제거하면최대 절전 모드 오류 - 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

시도 – davidxxx

답변

0

hibernate.cfg.xml의 파일 이름과 경로가 올바른지 확인하십시오. 또한

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

HibernateUtil과 클래스 아래에 사용하려고 : configuration.configure()`exepcted있는 hibernate.cfg.xml을 찾을 수`있는지 확인하기 위해 디버그 모드로 실행

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(); 
    } 
}