多个服务器上的hibernate实体管理器问题

时间:2015-06-26 20:11:28

标签: database hibernate entitymanager dropwizard hibernate-entitymanager

我在dropwizard框架中使用hibernate。 应用程序配置:为多个服务器的后端配备负载均衡器。 问题是当我保存新记录时,记录会保存在数据库中。但是当我试图从指向同一数据库的不同服务器获取记录时,我无法获得新创建的行。它仅存在于创建它的服务器中。 Hibernate缓存在属性中标记为false。 任何人都可以建议我缺少什么?或任何提示。

代码:

保存api:

@Transactional
public ID save(T entity) {
    EntityManager em = getEntityManager();
    if (em.contains(entity) ) {
        em.merge(entity);
    } else {
        em.persist(entity);
    }
    em.flush();
    return (ID) entity.getId();
}

GET api:

  public T findOne(final ID id) {
    EntityManager em = getEntityManager();

    T entity = em.find(getEntityClass(), id);
    em.flush();
    return entity;
}

1 个答案:

答案 0 :(得分:0)

虽然我们在没有看到相关代码的情况下无法确定,但这听起来好像数据根本没有写入数据库,或者没有被提交,因此不是#&# 39;其他交易可见。

为了验证,这是问题的原因,sql语句和事务的活动日志记录并验证

  1. 您的数据将写入数据库。您应该在日志中看到sql语句。

  2. 之后事务被提交。