在下面的代码中,当我尝试执行时出现Main.java
异常:
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)
但是如果我取消注释cfg.addClass( Users.class ).addResource( "com/np/vta/test/pojo/Users.hbm.xml" );
,那么代码就可以正常工作。
为什么它不读取<mapping>
from hibernate.cfg.xml
?
项目设置
休眠.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>
用户.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>
用户.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
}
主.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 );
}
}