jpa entitymanager包含始终返回false

时间:2011-02-19 15:08:45

标签: hibernate jpa

我有一个简单的测试用例,我保存一个对象,然后测试该对象是否存在于db中。但contains方法总是返回false。该对象保存在数据库中

 User entity = new User();
    entity.setName("test");
    User result = ObjectManager.save(entity);

    boolean exists = ObjectManager.contains(result);

    assertTrue(exists);

@Override
public boolean contains(T obj) throws DataStoreException {
    try {
        return entityManager.contains(obj);
    } catch (Exception e) {
        throw new DataStoreException(e);
    }
}

1 个答案:

答案 0 :(得分:3)

根据EntityManager documentation

  

检查实例是否为托管   属于的实体实例   当前的持久化背景。

所以它不检查它是否在数据库中。可能是你已经在save方法中分离了实体,或者某种程度上它不在当前的持久化上下文中。

使用find或get来验证db。

中是否存在