Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save Qleoz12/df32596c51e5f305dd3f0c0153cb7eea to your computer and use it in GitHub Desktop.
Save Qleoz12/df32596c51e5f305dd3f0c0153cb7eea to your computer and use it in GitHub Desktop.

Revisions

  1. Qleoz12 revised this gist Jul 21, 2020. No changes.
  2. @jeffsheets jeffsheets created this gist May 20, 2016.
    38 changes: 38 additions & 0 deletions HibernatePersistenceProviderResolver.java
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,38 @@
    import org.hibernate.jpa.HibernatePersistenceProvider;
    import org.springframework.context.annotation.Configuration;

    import javax.annotation.PostConstruct;
    import javax.persistence.spi.PersistenceProvider;
    import javax.persistence.spi.PersistenceProviderResolver;
    import javax.persistence.spi.PersistenceProviderResolverHolder;
    import java.util.Collections;
    import java.util.List;

    /**
    * This allows to deploy upgraded JPA and Hibernate versions to Websphere 8.5.5.x servers.
    * Has been used successfully with JPA 2.1 and Hibernate 4.3.11
    *
    * Mostly a copy of <a href="https://hibernate.atlassian.net/browse/JPA-4">https://hibernate.atlassian.net/browse/JPA-4</a>
    * Changes made to deploy in a Spring environment.
    *
    * To use: add a @DependsOn("hibernatePersistenceProviderResolver") annotation on a DatabaseConfig class
    */
    @Configuration
    public class HibernatePersistenceProviderResolver implements PersistenceProviderResolver {
    private volatile PersistenceProvider persistenceProvider = new HibernatePersistenceProvider();

    @Override
    public List<PersistenceProvider> getPersistenceProviders() {
    return Collections.singletonList(persistenceProvider);
    }

    @Override
    public void clearCachedProviders() {
    persistenceProvider = new HibernatePersistenceProvider();
    }

    @PostConstruct
    public void register() {
    PersistenceProviderResolverHolder.setPersistenceProviderResolver(new HibernatePersistenceProviderResolver());
    }
    }