相关疑难解决方法(0)

使用Hibernate 5和Spring 4的编程SchemaExport/SchemaUpdate

使用Spring 4和Hibernate 4,我能够使用Reflection从当前环境中获取Hibernate Configuration对象,使用以下代码:

@Autowired LocalContainerEntityManagerFactoryBean lcemfb;

EntityManagerFactoryImpl emf = (EntityManagerFactoryImpl) lcemfb.getNativeEntityManagerFactory();
SessionFactoryImpl sf = emf.getSessionFactory();
SessionFactoryServiceRegistryImpl serviceRegistry = (SessionFactoryServiceRegistryImpl) sf.getServiceRegistry();
Configuration cfg = null;

try {
    Field field = SessionFactoryServiceRegistryImpl.class.getDeclaredField("configuration");
    field.setAccessible(true);
    cfg = (Configuration) field.get(serviceRegistry);
} catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException e) {
    e.printStackTrace();
}

SchemaUpdate update = new SchemaUpdate(serviceRegistry, cfg);
Run Code Online (Sandbox Code Playgroud)

对于Hibernate 5,我必须使用一些MetadataImplementor,这些对象中似乎没有.我还试图用MetadataSourcesserviceRegistry.但它确实说这是错误的ServiceRegistry.

有没有其他方法让这个工作?

java spring hibernate spring-4 hibernate-5.x

21
推荐指数
2
解决办法
7589
查看次数

org.hibernate.boot.model.TypeContributor:找不到提供程序

我正在尝试在 Spring Boot 应用程序中使用这种方法注册hibernate-types库提供的列表数组类型。不幸的是,当我从控制台启动应用程序时,它会抛出以下异常:

WARN  o.h.b.r.c.i.AggregatedServiceLoader - HHH000505: Ignoring ServiceConfigurationError caught while trying to instantiate service 'interface org.hibernate.boot.model.TypeContributor'.
java.util.ServiceConfigurationError: org.hibernate.boot.model.TypeContributor: Provider org.example.CustomTypeContributor not found
        at java.base/java.util.ServiceLoader.fail(ServiceLoader.java:588) ~[na:na]
        at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.nextProviderClass(ServiceLoader.java:1211) ~[na:na]
        at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNextService(ServiceLoader.java:1220) ~[na:na]
        at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNext(ServiceLoader.java:1264) ~[na:na]
        at java.base/java.util.ServiceLoader$2.hasNext(ServiceLoader.java:1299) ~[na:na]
        at java.base/java.util.ServiceLoader$ProviderSpliterator.tryAdvance(ServiceLoader.java:1483) ~[na:na]
        at java.base/java.util.Spliterators$1Adapter.hasNext(Spliterators.java:681) ~[na:na]
        at org.hibernate.boot.registry.classloading.internal.AggregatedServiceLoader$ClassPathAndModulePathAggregatedServiceLoader.hasNextIgnoringServiceConfigurationError(AggregatedServiceLoader.java:241) ~[hibernate-core-5.4.12.Final.jar!/:5.4.12.Final]
        at org.hibernate.boot.registry.classloading.internal.AggregatedServiceLoader$ClassPathAndModulePathAggregatedServiceLoader.loadAll(AggregatedServiceLoader.java:219) ~[hibernate-core-5.4.12.Final.jar!/:5.4.12.Final]
        at org.hibernate.boot.registry.classloading.internal.AggregatedServiceLoader$ClassPathAndModulePathAggregatedServiceLoader.getAll(AggregatedServiceLoader.java:187) ~[hibernate-core-5.4.12.Final.jar!/:5.4.12.Final]
        at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.loadJavaServices(ClassLoaderServiceImpl.java:251) ~[hibernate-core-5.4.12.Final.jar!/:5.4.12.Final]
        at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.handleTypes(MetadataBuildingProcess.java:379) ~[hibernate-core-5.4.12.Final.jar!/:5.4.12.Final]
        at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:123) ~[hibernate-core-5.4.12.Final.jar!/:5.4.12.Final]
        at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1202) ~[hibernate-core-5.4.12.Final.jar!/:5.4.12.Final]
        at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1233) ~[hibernate-core-5.4.12.Final.jar!/:5.4.12.Final]
        at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58) ~[spring-orm-5.2.5.RELEASE.jar!/:5.2.5.RELEASE]
        at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365) ~[spring-orm-5.2.5.RELEASE.jar!/:5.2.5.RELEASE] …
Run Code Online (Sandbox Code Playgroud)

hibernate serviceloader kotlin spring-boot

5
推荐指数
0
解决办法
802
查看次数

如何配置 Hibernate(通过 Spring Boot)为所有布尔列使用“NumericBooleanType”

如何将 Hibernate 配置为对每个布尔列使用其内置类型NumericBooleanType@Type ,而不在每列上使用任何注释 ( )?

编辑:更多一点背景知识 - 目标是使用一个代码库支持 Oracle 和 Postgres,并且由于 Oracle 没有boolean类型,我想让 Postgres 像 Oracle 一样存储布尔值0/1

hibernate jpa spring-boot

3
推荐指数
1
解决办法
3539
查看次数