Hibernate - org.hibernate.MappingException: Unknown entity

Odpowiedz Nowy wątek
Lolzo
2012-09-08 22:18
Lolzo
0

XML cfg

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>

    <session-factory>
        <!-- Database connection settings -->
        <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">w</property>

        <!-- JDBC connection pool (use the built-in) -->
        <property name="hibernate.connection.pool_size">1</property>

        <!-- SQL dialect -->
        <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>

        <!-- Enable Hibernate's automatic session context management -->
        <property name="hibernate.current_session_context_class">thread</property>

        <!-- Disable the second-level cache -->
        <property name="hibernate.cache.provider_class">org.hibernate.cache.internal.NoCacheProvider
        </property>

        <!-- Echo all executed SQL to stdout -->
        <property name="hibernate.show_sql">true</property>

        <!-- Drop and re-create the database schema on startup -->
        <property name="hibernate.hbm2ddl.auto">create</property>
        <mapping class="com.stik.Employee"/>

    </session-factory>
</hibernate-configuration>

Servlett

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        Configuration configuration = new Configuration();
      configuration.configure("hibernate.cfg.xml");
      ServiceRegistryBuilder serviceRegistryBuilder = new ServiceRegistryBuilder().applySettings(configuration
                      .getProperties());
      SessionFactory sessionFactory = configuration
                      .buildSessionFactory(serviceRegistryBuilder.buildServiceRegistry());
      Session session = sessionFactory.openSession();

      session.save(new Employee());
      session.beginTransaction().commit();

    }

Entity

package com.stik;

import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class Employee {

    @Id
    private int id;
    private String firstName;
    private String lastName;

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getFirstName() {
        return firstName;
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public String getLastName() {
        return lastName;
    }
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

}

Kompletnie nie wiem ocb, bo działało, nic nie zmieniłem i nie działa ;o
błąd: org.hibernate.MappingException: Unknown entity: com.stik.Employee

Wiem, że nie powinienem tak robić w Servlecie, ale wcześniej działało (w tym przypadku to chyba nic nie ma do rzeczy). Wiecie o co chodzi z tym błędem ? Przecież jest mapping file w cfg :/

Pozostało 580 znaków

2012-09-20 20:24

Rejestracja: 10 lat temu

Ostatnio: 11 miesięcy temu

0

Jeśli się nie mylę, a raczej się nie mylę to sprawa jest prosta.

Masz w encji Employee id które jest int. Nie widzę u Ciebie żadnych konstruktorów a więc masz domyślny jeden konstruktor bez argument-owy. Domyślnie w javie inty są ustawiane na -1 , a więc ty piszesz, że aplikacja Ci działała. Zadziałała Ci pewnie za pierwszym razem i dana encja została zapisana z id = -1 natomiast za drugim razem już nie zadziałało ponieważ encja z takim id już istniała. Więc masz 2 rozwiązania albo manualnie ustawisz id encji albo dodaj sobie @GeneratedValue(strategy=GenerationType.IDENTITY) do id aby twoje id było generowane przez system bazodanowy.

Napisz czy Ci działa

u mnie na wsi, domyślnie int = 0 ;) - Ranides 2012-09-21 17:08
:D dokładnie sorki. Stare przyzwyczajenia z projektu. Gdzie wymagali pisania domyślnych konstruktorów i inicjalizowanie zmiennych wartością -1 , false lub null. - lukasw44 2012-09-21 17:43

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 0, botów: 1

Robot: CCBot