Hibernate entité inconnue (ne pas manquer @Entité ou import javax.la persistance.Entité )
J'ai une très simple de la classe:
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "users")
public class User {
@Column(name = "firstName")
private String firstName;
@Column(name = "lastName")
private String lastName;
@Column(name = "email")
private String email;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name = "id")
private long 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;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
}
Je l'appelle à l'aide de cette main:
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
//TODO Auto-generated method stub
HibernateUtil.buildSessionFactory();
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
User u = new User();
u.setEmail("[email protected]");
u.setFirstName("David");
u.setLastName("Gray");
session.save(u);
session.getTransaction().commit();
System.out.println("Record committed");
session.close();
}
}
Je reçois ce MappingException:
Exception in thread "main" org.hibernate.MappingException: Unknown entity: org.assessme.com.entity.User
at org.hibernate.internal.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:1172)
at org.hibernate.internal.SessionImpl.getEntityPersister(SessionImpl.java:1316)
at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:117)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:204)
at org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:55)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:189)
at org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:49)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90)
at org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:670)
at org.hibernate.internal.SessionImpl.save(SessionImpl.java:662)
at org.hibernate.internal.SessionImpl.save(SessionImpl.java:658)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.hibernate.context.internal.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:352)
at $Proxy4.save(Unknown Source)
at Main.main(Main.java:20)
Mon HibernateUtil est:
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
public class HibernateUtil {
private static SessionFactory sessionFactory;
private static ServiceRegistry serviceRegistry;
public static SessionFactory buildSessionFactory() {
try {
//Create the SessionFactory from hibernate.cfg.xml
Configuration configuration = new Configuration();
configuration.configure();
serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
return new Configuration().configure().buildSessionFactory(serviceRegistry);
} catch (Throwable ex) {
//Make sure you log the exception, as it might be swallowed
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
sessionFactory = new Configuration().configure().buildSessionFactory(serviceRegistry);
return sessionFactory;
}
}
Quelqu'un a une idée que j'ai regardé si de nombreux doublons, mais les résolutions ne semble pas fonctionner pour moi. C'est mon hibernate.cfg.xml:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- Database connection settings -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost/ssme</property>
<property name="connection.username">root</property>
<property name="connection.password">mypassword</property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>
<!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<!-- Drop and re-create the database schema on startup -->
<property name="hbm2ddl.auto">update</property>
</session-factory>
</hibernate-configuration>
OriginalL'auteur david99world | 2012-04-02
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser
AnnotationConfiguration
au lieu deConfiguration
et ensuite appelerpour ajouter votre classe à la liste des classes mappées.
Dépend de la taille de votre projet. Si vous avez seulement un couple de parcours de classes, vous pouvez le faire dans votre
HibernateUtil
. Pour les grands projets, vous pouvez par exemple utiliser la réflexion pour ajouter toutes les classes d'un package spécifique pour hibernate, ou vous pouvez utiliser un mappage de fichier de configuration.OriginalL'auteur phlogratos
Ajouter à
hibernate.cfg.xml
avant</session-factory>
ce:OriginalL'auteur gooogenot
Envisager d'utiliser
AnnotationConfiguration
décrit ici.Vous pouvez soit utiliser son
addClass(User.class)
méthode, ou si vous êtes à la persistance de plusieurs entités à l'utilisation de laaddPackage("org.assessme.com.entity")
méthode.Vous êtes le genre de réinventer la roue avec cette
HibernateUtil
classe. Pensez à utiliser le Printemps de sorte que vous pouvez en tirer quelque chose comme saAnnotationSessionFactoryBean
.OriginalL'auteur darrengorman
J'ai oublié d'ajouter le hbm.xml la cartographie dans mon cfg.xml fichier. Dès que je l'ai ajouté, cette exception a disparu.
OriginalL'auteur Siddharth
Ajouter en dessous de la ligne de votre hibernate.cfg.xml
OriginalL'auteur Abhai Singh
Avez-vous des
persistence.xml
ouhibernate.cfg.xml
? Si vous devez ajouter votre mappage de classe en elle de sorte que hibernate obtenir comprendre votre classe est la cartographie de la base de données. Si vous avezhibernate.cfg.xml
vous pouvez ajouter comme ceOriginalL'auteur mbaydar