在Hibernate 5.2中获取sessionFactory的这种变体有什么问题?

@Bean
public SessionFactory sessionFactory() throws IOException {
    LocalSessionFactoryBean localSessionFactoryBean = new LocalSessionFactoryBean();
    localSessionFactoryBean.setDataSource(dataSource());
    localSessionFactoryBean.setPackagesToScan(new String[] { "com.test.core.domain.*" });
    localSessionFactoryBean.setMappingLocations(loadResources());
    localSessionFactoryBean.setHibernateProperties(hibernateProperties());
    localSessionFactoryBean.afterPropertiesSet();

    return localSessionFactoryBean.getObject();
}

它引发NullPointerException:

引起:org.springframework.beans.BeanInstantiationException:无法实例化[org.hibernate.SessionFactory]:工厂方法'sessionFactory'抛出异常;嵌套异常是org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185)中的java.lang.NullPointerException,位于org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:579)在显示java.lang.NullPointerException org.hibernate.metamodel.internal.AttributeFactory.getMetaModelType(AttributeFactory.java:202)在org.hibernate.metamodel.internal.AttributeFactory.buildPluralAttribute(AttributeFactory.java:176:... 75多所致)在org.hibernate.metamodel.internal.AttributeFactory.buildAttribute(AttributeFactory.java:82)在org.hibernate.metamodel.internal.MetadataContext.wrapUp(MetadataContext.java:213)在org.hibernate.metamodel.internal.MetamodelImpl . 在org.hibe的org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:460)的org.hibernate.internal.SessionFactoryImpl . (SessionFactoryImpl.java:300)初始化(MetamodelImpl.java:220) rnate.cfg.Configuration.buildSessionFactory(Configuration.java:710)在org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:726)在org.springframework.orm.hibernate5.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:535)在org.springframework.orm.hibernate5.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:519)在com.ya0ne.core.config.HibernateConfiguration.sessionFactory(HibernateConfiguration.java:46)在com.ya0ne.core.config.HibernateConfiguration $$在com.ya0ne.core.config.HibernateConfiguration $$ EnhancerBySpringCGLIB $$ 8f9edb09 $$ FastClassBySpringCGLIB $$ 4b721c9d.invoke()at org.springframework.cglib.proxy.MethodProxy.invokeSuper(EnhancerBySpringCGLIB $$ 8f9edb09.CGLIB $ sessionFactory $ 2() MethodProxy.java:228)在org.springframework.context.annotation.ConfigurationClassEnhancer $ BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:361)在com.ya0ne.core.config.HibernateConfiguration $$ EnhancerBySpringCGLIB $$ 8f9edb 09.sessionFactory()在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)在java的 . lang.reflect.Method.invoke(Method.java:498)org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)... 76更多

什么是元数据以及我需要添加它的原因?