我在dropwizard框架中使用hibernate。 应用程序配置:为多个服务器的后端配备负载均衡器。 问题是当我保存新记录时,记录会保存在数据库中。但是当我试图从指向同一数据库的不同服务器获取记录时,我无法获得新创建的行。它仅存在于创建它的服务器中。 Hibernate缓存在属性中标记为false。 任何人都可以建议我缺少什么?或任何提示。
代码:
@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();
}
public T findOne(final ID id) {
EntityManager em = getEntityManager();
T entity = em.find(getEntityClass(), id);
em.flush();
return entity;
}
答案 0 :(得分:0)
虽然我们在没有看到相关代码的情况下无法确定,但这听起来好像数据根本没有写入数据库,或者没有被提交,因此不是#&# 39;其他交易可见。
为了验证,这是问题的原因,sql语句和事务的活动日志记录并验证
您的数据将写入数据库。您应该在日志中看到sql语句。
之后事务被提交。