2015-02-27 6 views
0

У нас есть приложение, которое использует Guice 1.0 с warp-servlet и warp-persist, и мы хотели бы перейти на Guice 2 или 3. Однако мы попали в сеть из которые усложняют ситуацию.Устранение проблем с зависимостями Guice с Warp-Persist

Кто-нибудь знает простой способ (как можно ближе к замене), чтобы либо сделать работу с неустойчивой работой с новым Guice, либо сделать работу Guice-persist с прямым Hibernate?

  • искривлений упорствовать требует варп-сервлет
  • искривлений сервлет и деформации сохраняются только поддерживает Guice 1.0
  • Guice-сохраняется, как представляется, являются заменой для деформаций сохраняются, но он поддерживает только JPA, в то время как мы используем Hibernate напрямую (со значительным наследием кода на основе критериев, который делает перенос на JPA нетривиальным).
  • Guice-persist также утверждает, что имеет способ поддерживать доступ к данным, доступным не для JPA, но, похоже, нет никакой документации по этому вопросу.
  • Warp-persist, похоже, не поддерживает Hibernate 4, поэтому мы не можем обновить Hibernate.

ответ

1

вы можете получить доступ к сеансу гибернации из диспетчера сущности JPA. Это позволяет использовать мигрировать от warp.

@Singleton 
public class SessionProvider implements Provider<Session> { 

    /** The entity manger to retrieve the session from. */ 
    @Inject 
    private Provider<EntityManager> entityManagerProvider; 

    /** 
    * @return the Hibernate session, being the delegate of the entity manager provided by the injected entity manager provider. 
    */ 
    @Override 
    public Session get() { 
     final Session session = (Session) entityManagerProvider.get().getDelegate(); 
     return session; 
    } 
} 

Все, что вам нужно сделать, это настроить Hibernate как реализацию JPA. Также я бы рекомендовал использовать onami persist. Кажется, что исчезает Guice.

+0

Это почти работает! Мы просто сталкиваемся с проблемами с SessionPerRequestFilter, который жалуется, что UnitOfWork должен быть «ЗАПРОС». Мы устанавливаем это, но, по-видимому, он не устанавливается в нужном месте, теперь мы вызываем PersistenceService.usingJpa() вместо использованияHibernate() – ThrawnCA

+0

Обновление: все, что нам нужно было сделать, это изменить с Hibernate SessionPerRequestFilter на JPA один. Сейчас это работает :) – ThrawnCA

 Смежные вопросы

  • Нет связанных вопросов^_^