org.hibernate.MappingException: entity class not found ( using qualified class name does not work)
hibernate-tools, hql, orm
Solution
You forgot to declare the mapping files in the main config file:
<session-factory>
...
<mapping resource="demo/Clients.hbm.xml"/>
<mapping resource="demo/Agents.hbm.xml"/>
</session-factory>
I'll repeat my comment here: the entities should be named with a singular form: `Agent`, `Client`. Tweak the auto-generation (see http://docs.jboss.org/tools/3.0.1.GA/en/hibernatetools/html_single/index.html#tab_and_col), or refactor the generated code afterwards, because all your application code will be based on these names, and it's really awful to call an `Agent` an `Agents`. The code will be confusing and hard to understand. Entities are the core of your application anyway, and should contain other methods than just setters and getters. So automatic generation is OK to start up, but should be forgotten afterwards.
Problem
I'm trying to run a simple SELECT FROM table ( I have also tried SELECT FROM package.Class )query but I keep getting this error : ``` org.hibernate.MappingException: entity class not found: demo.Agents at org.hibernate.mapping.PersistentClass.getMappedClass(PersistentClass.java:125) at org.hibernate.tuple.PropertyFactory.getGetter(PropertyFactory.java:191) at org.hibernate.tuple.PropertyFactory.buildIdentifierProperty(PropertyFactory.java:67) at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:136) at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:475) at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:133) at org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:84) at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:297) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1385) at org.hibernate.console.ConsoleConfiguration$5.execute(ConsoleConfiguration.java:278) at org.hibernate.console.execution.DefaultExecutionContext.execute(DefaultExecutionContext.java:63) at org.hibernate.console.ConsoleConfiguration.execute(ConsoleConfiguration.java:107) at org.hibernate.console.ConsoleConfiguration.buildSessionFactory(ConsoleConfiguration.java:273) at org.hibernate.eclipse.console.actions.ExecuteQueryAction.execute(ExecuteQueryAction.java:82) at org.hibernate.eclipse.console.actions.ExecuteQueryAction.run(ExecuteQueryAction.java:56) at org.eclipse.jface.action.Action.runWithEvent(Action.java:498) at org.hibernate.eclipse.console.actions.ExecuteQueryAction.runWithEvent(ExecuteQueryAction.java:60) at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584) at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501) at org.eclipse.jface.action.ActionContributionItem$6.handleEvent(ActionContributionItem.java:452) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4165) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3754) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2701) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2665) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2499) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:679) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:668) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577) at org.eclipse.equinox.launcher.Main.run(Main.java:1410) Caused by: java.lang.ClassNotFoundException: demo.Agents at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:513) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417) at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:169) at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:192) at org.hibernate.mapping.PersistentClass.getMappedClass(PersistentClass.java:122) ... 43 more ``` Here is the hbm.xml file of the class (notice the full qualifier demo.Agents) ``` <?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 Jun 27, 2012 19:17:46 by Hibernate Tools 3.6.0 --> <hibernate-mapping> <class name="demo.Agents" table="agents" schema="public"> <id name="id" type="int"> <column name="id" /> <generator class="assigned"></generator> </id> <property name="ssn" type="long"> <column name="ssn" precision="13" scale="0" not-null="true" /> </property> <property name="namee" type="string"> <column name="namee" length="15" not-null="true" /> </property> <property name="surname" type="string"> <column name="surname" length="30" not-null="true" /> </property> <property name="adress" type="string"> <column name="adress" length="100" /> </property> <property name="phone" type="string"> <column name="phone" length="20" /> </property> </class> </hibernate-mapping> ``` Some other details, possibly helpful: http://img441.imageshack.us/img441/2572/ss20120627202116.png http://img20.imageshack.us/img20/2236/ss20120624201620.png If you need any other printscreens i'll be happy to provide them. Please help :). I'm in a really tight spot. Thanks ( and somebody add some better tags i'm to stressed out right now to think too much about them) LE the hibernatecfg.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">org.postgresql.Driver</property> <property name="hibernate.connection.password">blablabla</property> <property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/projteste</property> <property name="hibernate.connection.username">postgres</property> <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property> </session-factory> </hibernate-configuration> ``` the mappings are done in the console configuration LE2 see the comments (link 607) i get that error if i remove the classes from additional mappings in console configuration.. here's the hibernatecfg.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 name=""> <property name="hibernate.connection.driver_class">org.postgresql.Driver</property> <property name="hibernate.connection.password">123456</property> <property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/projteste</property> <property name="hibernate.connection.username">postgres</property> <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property> <mapping resource="demo/Clients.hbm.xml"/> <mapping resource="demo/Agents.hbm.xml"/> </session-factory> </hibernate-configuration> ``` and the stack traces ``` org.hibernate.MappingNotFoundException: resource: demo/Clients.hbm.xml not found at org.hibernate.cfg.Configuration.addResource(Configuration.java:665) at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1679) at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1647) at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1626) at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1600) at org.hibernate.cfg.Configuration.configure(Configuration.java:1554) at org.hibernate.console.ConfigurationFactory.loadConfigurationXML(ConfigurationFactory.java:351) at org.hibernate.console.ConfigurationFactory.configureStandardConfiguration(ConfigurationFactory.java:279) at org.hibernate.console.ConfigurationFactory.buildConfiguration(ConfigurationFactory.java:184) at org.hibernate.console.ConfigurationFactory.createConfiguration(ConfigurationFactory.java:96) at org.hibernate.console.ConsoleConfiguration$3.execute(ConsoleConfiguration.java:240) at org.hibernate.console.execution.DefaultExecutionContext.execute(DefaultExecutionContext.java:63) at org.hibernate.console.ConsoleConfiguration.execute(ConsoleConfiguration.java:107) at org.hibernate.console.ConsoleConfiguration.buildWith(ConsoleConfiguration.java:237) at org.hibernate.console.ConsoleConfiguration.build(ConsoleConfiguration.java:188) at org.hibernate.eclipse.console.workbench.ConsoleConfigurationWorkbenchAdapter.getChildren(ConsoleConfigurationWorkbenchAdapter.java:42) at org.hibernate.eclipse.console.workbench.BasicWorkbenchAdapter.getChildren(BasicWorkbenchAdapter.java:100) at org.hibernate.eclipse.console.workbench.BasicWorkbenchAdapter.fetchDeferredChildren(BasicWorkbenchAdapter.java:106) at org.eclipse.ui.progress.DeferredTreeContentManager$1.run(DeferredTreeContentManager.java:235) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) ``` k4 ``` org.hibernate.console.HibernateConsoleRuntimeException: Could not compute classpath at org.hibernate.eclipse.console.EclipseLaunchConsoleConfigurationPreferences.getCustomClassPathURLS(EclipseLaunchConsoleConfigurationPreferences.java:103) at org.hibernate.eclipse.console.utils.ProjectUtils.findJavaProjects(ProjectUtils.java:302) at org.hibernate.eclipse.console.workbench.ProjectCompilerVersionChecker.validateProjectComplianceLevel(ProjectCompilerVersionChecker.java:35) at org.hibernate.eclipse.console.workbench.ConsoleConfigurationWorkbenchAdapter.getChildren(ConsoleConfigurationWorkbenchAdapter.java:37) at org.hibernate.eclipse.console.workbench.BasicWorkbenchAdapter.getChildren(BasicWorkbenchAdapter.java:100) at org.hibernate.eclipse.console.workbench.BasicWorkbenchAdapter.fetchDeferredChildren(BasicWorkbenchAdapter.java:106) at org.eclipse.ui.progress.DeferredTreeContentManager$1.run(DeferredTreeContentManager.java:235) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) Caused by: org.eclipse.core.runtime.CoreException: Unable to restore classpath entry. at org.eclipse.jdt.launching.JavaRuntime.abort(JavaRuntime.java:1376) at org.eclipse.jdt.launching.JavaRuntime.abort(JavaRuntime.java:1361) at org.eclipse.jdt.launching.JavaRuntime.newRuntimeClasspathEntry(JavaRuntime.java:731) at org.eclipse.jdt.launching.StandardClasspathProvider.recoverRuntimePath(StandardClasspathProvider.java:100) at org.eclipse.jdt.launching.StandardClasspathProvider.computeUnresolvedClasspath(StandardClasspathProvider.java:65) at org.eclipse.jdt.launching.JavaRuntime.computeUnresolvedRuntimeClasspath(JavaRuntime.java:1215) at org.hibernate.eclipse.console.utils.ClassLoaderHelper.getClasspath(ClassLoaderHelper.java:146) at org.hibernate.eclipse.console.EclipseLaunchConsoleConfigurationPreferences.getCustomClassPathURLS(EclipseLaunchConsoleConfigurationPreferences.java:94) ... 7 more Caused by: org.xml.sax.SAXException: FWK005 parse may not be called while parsing. at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:263) at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:284) at org.eclipse.jdt.launching.JavaRuntime.newRuntimeClasspathEntry(JavaRuntime.java:708) ... 12 more ```