2015-11-13 2 views
1

Я использую hibernate 5 и пытаюсь сохранить объект в моей базе данных. Но по какой-то причине я всегда получаю Exception in thread "main" org.hibernate.MappingException: Unknown entity: model.database.Customer.Hibernate не находит Mapping-файл: org.hibernate.UnknownEntityTypeException: Не удается найти persister

My project structure

По какой-то причине, Customer.hbm.xml не был найден. Я действительно не знаю, почему.

Customer.hbm.xml:

<?xml version='1.0' encoding='utf-8'?> 
<!DOCTYPE hibernate-mapping PUBLIC 
"-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> 
<hibernate-mapping> 
<class name="model.database.Customer" table="CUSTOMER"> 
    <id name="username" type="string"> 
     <column name="USERNAME" length="8" /> 
     <generator class="assigned"></generator> 
    </id> 
    <property name="password" type="string"> 
     <column name="PASSWORD" length="8" /> 
    </property> 
    <property name="lastname" type="string"> 
     <column name="LASTNAME" length="20" /> 
    </property> 
    <property name="firstname" type="string"> 
     <column name="FIRSTNAME" length="20" /> 
    </property> 
</class> 
</hibernate-mapping> 

Customer.java:

import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.Id; 
import javax.persistence.Table; 

@Entity 
@Table(name="CUSTOMER") 
public class Customer implements java.io.Serializable { 



    private static final long serialVersionUID = 1L; 

    @Id 
    @Column(name="username", nullable=false) 

    private String username; 

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

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

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

    public Customer() { 

    } 

    public Customer(String username) { 
     this.username = username; 
    } 

    public Customer(String username, String firstname, String lastname, String password) { 
     this.username = username; 
     this.firstname = firstname; 
     this.lastname = lastname; 
     this.password = password; 
    } 

    public String getUsername() { 
     return this.username; 
    } 

    public void setUsername(String username) { 
     this.username = username; 
    } 


    public String getFirstname() { 
     return this.firstname; 
    } 

    public void setFirstname(String firstname) { 
     this.firstname = firstname; 
    } 


    public String getLastname() { 
     return this.lastname; 
    } 

    public void setLastname(String lastname) { 
     this.lastname = lastname; 
    } 


    public String getPassword() { 
     return this.password; 
    } 

    public void setPassword(String password) { 
     this.password = password; 
    } 


} 

hibernate.cfg.xml:

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE hibernate-configuration SYSTEM 
     "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> 
<hibernate-configuration> 
    <session-factory> 
    <property name="hibernate.dialect"> 
     org.hibernate.dialect.PostgreSQL81Dialect 
    </property> 
    <property name="hibernate.connection.driver_class"> 
     org.postgresql.Driver 
    </property> 
    <property name="hibernate.connection.url"> 
     jdbc:postgresql://localhost:5432/postgres 
    </property> 
    <property name="hibernate.connection.username"> 
     postgres 
    </property> 
    <property name="hibernate.connection.password"> 
     postgres 
    </property> 
    <property name="hibernate.current_session_context_class"> 
     thread 
    </property> 

    <mapping resource="model/database/Customer.hbm.xml"/> 
    </session-factory> 
</hibernate-configuration> 

Главная:

public class Main { 

    public static void main(String[] args) { 
     Customer cstm = new Customer("lebetyp", "peter", "ja", "ja"); 
     CustomerManager mngr = new CustomerManager(); 
     mngr.saveCustomer(cstm); 
    } 
} 

HibernateUtil:

public class HibernateUtil { 

    private static final SessionFactory sessionFactory; 

    static { 
     try { 
      // Create the SessionFactory from hibernate.cfg.xml 
      Configuration configuration = new Configuration().configure(); 
      StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()); 
      sessionFactory = configuration.buildSessionFactory(builder.build()); 
      System.out.println("Initial SessionFactory creation"); 
     } catch (Throwable ex) { 
      System.out.println("Initial SessionFactory creation failed." + ex); 
      throw new ExceptionInInitializerError(ex); 
     } 
    } 

    public static SessionFactory getSessionFactory() { 
     return sessionFactory; 
    } 

} 

My dependencies for hibernate

Как я могу избавиться от этого исключения, чтобы заставить его работать. Отсутствует ли зависимость? Или что я делаю неправильно?

+0

В чем Ваш вопрос, точно? –

+0

Как я могу избавиться от этого исключения, чтобы он работал. Отсутствует ли зависимость? Или что я делаю неправильно? – testiguy

+0

Спасибо, @testiguy. Теперь я добавил это к вашему вопросу. –

ответ

0

Добавьте это в hibernate.cfg.xml

удалить <mapping resource="model/database/Customer.hbm.xml"/> и добавить

<mapping class="Customer"></mapping>. 

Я надеюсь, что ваш класс Клиент имеет JPA аннотации, как @Entity, @Id и т.д. в нем.

+0

Да У меня есть аннотации JPA, я добавил класс в свой вопрос. Я заменил '' с '', но все равно такое же исключение. У вас есть другая идея? – testiguy

Смежные вопросы