首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在HibernateJpaAutoConfiguration中指定packagesToScan?

如何在HibernateJpaAutoConfiguration中指定packagesToScan?
EN

Stack Overflow用户
提问于 2014-08-18 23:10:19
回答 2查看 40K关注 0票数 32

我在Spring单元测试中直接使用了HibernateJpaAutoConfiguration。在配置Hibernate和EntityManager时,不会扫描任何实体。

异常

10:29:36.377 [main] INFO  o.s.b.f.a.AutowiredAnnotationBeanPostProcessor - JSR-330 javax.inject.Inject' annotation found and supported for autowiring
10:29:36.505 [main] TRACE o.s.b.b.PropertiesConfigurationFactory - Property Sources: org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor$FlatPropertySources@65f8f5ae
10:29:36.638 [main] TRACE o.s.b.b.PropertiesConfigurationFactory - Property Sources: org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor$FlatPropertySources@65f8f5ae
10:29:36.716 [main] TRACE o.s.b.b.PropertiesConfigurationFactory - Property Sources: org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor$FlatPropertySources@65f8f5ae
10:29:36.818 [main] INFO  o.s.o.j.LocalContainerEntityManagerFactoryBean - Building JPA container EntityManagerFactory for persistence unit 'default'
10:29:36.842 [main] INFO  o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [
    name: default
    ...]
10:29:36.979 [main] INFO  org.hibernate.Version - HHH000412: Hibernate Core {4.3.6.Final}
10:29:36.980 [main] INFO  org.hibernate.cfg.Environment - HHH000206: hibernate.properties not found
10:29:36.982 [main] INFO  org.hibernate.cfg.Environment - HHH000021: Bytecode provider name : javassist
10:29:37.234 [main] INFO  o.h.annotations.common.Version - HCANN000001: Hibernate Commons Annotations {4.0.4.Final}
10:29:37.599 [main] INFO  org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.PostgreSQL9Dialect
10:29:37.608 [main] INFO  o.h.e.j.internal.LobCreatorBuilder - HHH000424: Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect.InvocationTargetException
10:29:37.648 [main] INFO  o.h.h.i.a.ASTQueryTranslatorFactory - HHH000397: Using ASTQueryTranslatorFactory
10:29:37.742 [main] INFO  o.h.tool.hbm2ddl.SchemaUpdate - HHH000228: Running hbm2ddl schema update
10:29:37.742 [main] INFO  o.h.tool.hbm2ddl.SchemaUpdate - HHH000102: Fetching database metadata
10:29:37.744 [main] INFO  o.h.tool.hbm2ddl.SchemaUpdate - HHH000396: Updating schema
10:29:37.745 [main] INFO  o.h.tool.hbm2ddl.SchemaUpdate - HHH000232: Schema update complete

我的解决方法是创建自己的LocalContainerEntityManagerFactoryBean,如下所示:

    final LocalContainerEntityManagerFactoryBean factoryBean = new LocalContainerEntityManagerFactoryBean();
    factoryBean.setPersistenceUnitName("buzzPU"); // persistence.xml
    factoryBean.setDataSource(dataSource);
    factoryBean.setJpaVendorAdapter(jpaVendorAdapter);
    factoryBean.setPersistenceXmlLocation("classpath*:META-INF/donotparsepersistence.xml");
    factoryBean.setPackagesToScan("org.soluvas.buzz.core.jpa");

请注意,我没有使用META-INF/persistence.xml

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-19 01:04:34

来自Spring Boot参考...

Spring Boot尝试根据它找到的@EnableAutoConfiguration来猜测@Entity定义的位置。为了获得更多的控制,你可以使用@EntityScan注解,例如

@Configuration
@EnableAutoConfiguration
@EntityScan(basePackageClasses=City.class)
public class Application {
   //...
}
票数 66
EN

Stack Overflow用户

发布于 2015-11-22 15:48:49

使用以下命令也会有所帮助:

@EntityScan("org.soluvas.buzz.core.jpa")

它是“basePackages”属性的别名,用于配置要扫描带注释的实体的包列表。

此注释提供了手动设置LocalContainerEntityManagerFactoryBean.setPackagesToScan(String...)的另一种方法

如果您希望以类型安全的方式配置实体扫描,或者如果您的LocalContainerEntityManagerFactoryBean是auto-configured.

,则它特别有用

票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25366550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档