UnknownEntityTypeException: Impossible de localiser persister (Hibernate 5.0)
Dans le code ci-dessous, lorsque j'essaie d'exécuter Main.java
je suis arriver exception:
Exception in thread "main" org.hibernate.UnknownEntityTypeException: Unable to locate persister: com.np.vta.test.pojo.Users
at org.hibernate.internal.SessionFactoryImpl.locateEntityPersister(SessionFactoryImpl.java:792)
at org.hibernate.internal.SessionImpl.locateEntityPersister(SessionImpl.java:2637)
at org.hibernate.internal.SessionImpl.access$2500(SessionImpl.java:164)
at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.<init>(SessionImpl.java:2575)
at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.<init>(SessionImpl.java:2562)
at org.hibernate.internal.SessionImpl.byId(SessionImpl.java:1044)
at org.hibernate.internal.SessionImpl.get(SessionImpl.java:955)
at com.app.test.Main.main(Main.java:20)
mais si je ne décommentez cfg.addClass( Users.class ).addResource( "com/np/vta/test/pojo/Users.hbm.xml" );
le code fonctionne très bien.
Pourquoi il n'est pas la lecture de la <mapping>
de hibernate.cfg.xml
?
Projet d'installation
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>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.password">root@123321</property>
<property name="hibernate.connection.url">jdbc:mysql://192.168.1.90:3306/test</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<mapping resource="com/np/vta/test/pojo/Users.hbm.xml" class="com.np.vta.test.pojo.Users" />
</session-factory>
</hibernate-configuration>
Users.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 24 Aug, 2015 3:57:45 PM by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="com.np.vta.test.pojo.Users" table="tomcat_users">
<id name="userName" type="java.lang.String">
<column name="user_name" />
<generator class="assigned" />
</id>
<property name="password" type="java.lang.String">
<column name="password" />
</property>
</class>
</hibernate-mapping>
Users.java
package com.np.vta.test.pojo;
import java.io.Serializable;
public class Users implements Serializable
{
private static final long serialVersionUID = 7855937172997134350L;
private String userName;
private String password;
public Users()
{
}
//getter and setters
}
Main.java
package com.app.test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import com.np.vta.test.pojo.Users;
public class Main
{
public static void main( String[] args )
{
Configuration cfg = new Configuration();
cfg.configure( "hibernate.cfg.xml" );
// cfg.addClass( Users.class ).addResource( "com/np/vta/test/pojo/Users.hbm.xml" );
StandardServiceRegistryBuilder registryBuilder = new StandardServiceRegistryBuilder().applySettings( cfg.getProperties() );
SessionFactory sessionFactory = cfg.buildSessionFactory( registryBuilder.build() );
Session session = sessionFactory.openSession();
Users users = session.get( Users.class, "anand" );
System.out.println( users );
}
}
OriginalL'auteur Mohammad Faisal | 2015-08-25
Vous devez vous connecter pour publier un commentaire.
N'utilisez pas la Configuration avec StandardServiceRegistryBuilder, la Configuration est considéré comme obsolète, mais au lieu de faire le bootstrap comme mentionné dans le hibernate 5 documentation, j'ai eu le même problème et ce qu'il est corrigé.
pour plus de détails , consultez les la documentation
HYG : docs.jboss.org/hibernate/orm/5.0/topical/html/bootstrap/...
OriginalL'auteur osama yaccoub