Ошибка гибернации — org.hibernate.MappingException: неизвестный объект:

ребята ! у меня очень странная проблема с спящим режимом 5. Я получаю Exception в потоке "main" org.hibernate.MappingException: Unknown entity: com.rosko.Merchandiser Когда я удаляю configuration.addAnnotatedClass(com.rosko.Merchandiser .класс)

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 только для класса сопоставления?

С наилучшими пожеланиями.


person FBMtrader Fbmtrader    schedule 20.08.2016    source источник
comment
Попробуйте запустить в режиме отладки, чтобы configuration.configure() найти ожидаемый файл hibernate.cfg.xml.   -  person davidxxx    schedule 21.08.2016


Ответы (1)


убедитесь, что имя файла и путь к файлу 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();
    }
}
person akash777.sharma    schedule 21.08.2016