org.hibernate.UnknownEntityTypeException: Unable to locate persister: entity.Settings
According to Spring docs, the LocalSessionFactoryBean
#setMappingResources
method should be used for providing HBM mapping files, not the Hibernate configuration file (e.g. hibernate.cfg.xml
).
That's why it does not work. However, as soon as you use configLocation
property, it works because that's the intended method for providing the Hibernate-specific configuration file.
Now, since you probably use annotations, you don't need to use setMappingResources
at all. That's only needed if you want to use the XML_based HBM files to provide the Hibernate mappings.
What you need is LocalSessionFactoryBean
#setAnnotatedClasses
instead. Or setPackagesToScan
which allows you to give just the entities
folder and all entity classes inside will be registered.
I usually use this kind of configuration when I use hibernate and Spring:
<bean id="hibernateSessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"> <property name="dataSource" ref="hibernateDatasource" /> <!-- HERE YOU HAVE TO PUT THE PACKAGE WHERE YOUR ENTITY CLASS ARE LOCATED (I mean classes annotated with @Entity annotation --> <property name="packagesToScan" value="hibernate.models" /> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> ${hibernate.props.db.dialect} </prop> <prop key="hibernate.show_sql"> ${hibernate.props.db.show.sql} </prop> <prop key="hibernate.generate_statistics"> ${hibernate.props.db.generate.statistics} </prop> <prop key="hibernate.format_sql"> ${hibernate.props.db.format.sql} </prop> <prop key="hibernate.hbm2ddl.auto"> ${hibernate.props.db.ddl.instr} </prop> <prop key="hibernate.cache.use_second_level_cache">${hibernate.props.db.use.cache}</prop> <prop key="hibernate.cache.use_query_cache">${hibernate.props.db.use.query.cache}</prop> <prop key="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory </prop> <prop key="net.sf.ehcache.configurationResourceName">hibernateEhCacheCfg.xml</prop> <prop key="hibernate.jdbc.batch_size">${hibernate.props.db.jdbc.batch.size}</prop> <prop key="hibernate.jdbc.use_streams_for_binary">true</prop> </props> </property></bean>
All my properties are, then, loaded by using a property file
I hope it's useful
Angelo