1

This question is different from the other questions on the same topic of MappingException: Unknown entity because I have this line in my hibernate config:

<mapping class="bbb.Students" />

My entity class is as follows:

 package bbb;

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

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

private String id;
private String name;
private String number;


@Id
@Column(name = "ID", unique = true, nullable = false)
public String getId() {
    return id;
}
public void setId(String id) {
    this.id = id;
}

@Column(name = "NAME", nullable = false)
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}

@Column(name = "NUMBER", nullable = false)
public String getNumber() {
    return number;
}
public void setNumber(String number) {
    this.number = number;
}
}

I have the database test and the table Students manually created.

The error is:

 org.hibernate.MappingException: Unknown entity: bbb.Students

Exception in thread "main" org.hibernate.MappingException: Unknown entity: bbb.Students
    at org.hibernate.internal.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:776)
    at org.hibernate.internal.SessionImpl.getEntityPersister(SessionImpl.java:1533)
    at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:104)
    at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:192)
    at org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:38)
    at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:177)
    at org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:32)
    at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:73)
    at org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:682)
    at org.hibernate.internal.SessionImpl.save(SessionImpl.java:674)
    at org.hibernate.internal.SessionImpl.save(SessionImpl.java:669)
    at bbb.App.main(App.java:39)

The Main class is as follows:

package bbb;



import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;

public class App 
{
public static void main( String[] args )
{

    System.out.println("Hibernate one to one (Annotation)");

    Configuration conf = new Configuration();
    SessionFactory sf = conf.configure()
    .buildSessionFactory(
         new StandardServiceRegistryBuilder()  
         .applySettings(conf.getProperties())
            .build());

    Session session = sf.openSession();
    session.beginTransaction();

    Students s = new Students();

    s.setId("1");
    s.setName("Joe");
    s.setNumber("12345");



    session.save(s);
    session.getTransaction().commit();

    System.out.println("Done");
}
}

The full hibernate.config is as follows:

 <?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>
 <property    name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
 <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property>
 <property name="hibernate.connection.username">root</property>
 <property name="hibernate.connection.password">root</property>
 <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
 <property name="show_sql">true</property>
 <mapping class="bbb.Students" />
 </session-factory>
 </hibernate-configuration>

1 Answer 1

1

Just imported your Students class in a Hibernate based project. Everything work fine. Before running the application, I created schema "test" manually. Post a class with the main method. Probably something is wrong in it.

Update: Imported your's main method. The application still works. Can't reproduce an issue.

import bbb.Students;
import org.hibernate.*;
import org.hibernate.cfg.Configuration;


public class Main {
    private static final SessionFactory ourSessionFactory;

    static {
        try {
            ourSessionFactory = new Configuration().
                    configure("hibernate.cfg.xml").
                    buildSessionFactory();
        } catch (Throwable ex) {
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static Session getSession() throws HibernateException {
        return ourSessionFactory.openSession();
    }

    public static void main(final String[] args) throws Exception {
        final Session session = getSession();
        try {
           Transaction transaction= session.beginTransaction();
            Students student = new Students();
            student.setName("Vasua");
            student.setNumber("13");
            student.setId("1");
            session.save(student);
            transaction.commit();
                    } finally {
            session.close();
        }
    }
}




<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernte Configuration DTD//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="connection.url">
        jdbc:mysql://localhost/stack
        </property>
        <property name="connection.driver_class">
            com.mysql.jdbc.Driver
        </property>
        <property name="connection.username">
            root
        </property>
        <property name="connection.password">
            root
        </property>
        <!-- DB schema will be updated if needed -->
        <property name="hbm2ddl.auto">update</property>
        <mapping class="bbb.Students"/>
    </session-factory>
</hibernate-configuration>
Sign up to request clarification or add additional context in comments.

1 Comment

just posted my main class.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.