2016-02-26 2 views
0

My EntityManager не обнаруживает/фиксирует данные в базе данных Postgres. Однако соединения, которые он делает, застревают в «Idle in transaction». Вот мой код:Соединения EntityManager, застрявшие в «Idle in transaction» после сохранения/фиксации

public User create(User user) { 

    if(logger.isDebugEnabled()) { 
     logger.info("creating user: {}", user); 
    } 

    EntityManager entityManager = DbUtil.factory.createEntityManager(); 

    try { 
     entityManager.getTransaction().begin(); 
     // Persist takes an entity instance, adds it to the context and makes that instance managed (ie future updates 
     // to the entity will be tracked). 
     entityManager.persist(user); 
     entityManager.getTransaction().commit(); 
    } 
    catch(RuntimeException e) { 
     throw getDbException(e); 
    } 
    finally { 
     entityManager.close(); 
    } 

    return user; 
} 

Любая идея, почему они не закрываются?

ответ

0

Вы говорите, что упорные работы, возможно, вы видите свои данные в дБ. Но вы видите все данные, не были ли сбои? Ваш код не обрабатывает откаты транзакций, это может быть причиной, по которой вы видите соединение в состоянии «Idle in transaction».

Если исключение выбрано throw getDbException(e), транзакция не возвращается.

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

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