从休眠数据库中删除对象的结果



我很好奇创建对象时应该产生什么结果,然后我删除对象,然后尝试从数据库加载此对象。我想它应该是"空"。在一个表中,我在第二个表中收到"null",我什么也没收到。

创造:

public void createPerson(Person p) {
    session.beginTransaction();
    session.save(p);
    session.getTransaction().commit();
    logger.info("Person saved successfully!");
}

删除:

public void deletePerson(int id) {
    session.beginTransaction();
    Person p = getPersonById(id);
    if(p != null){
        session.delete(p);
        session.getTransaction().commit();
    }
    if(getPersonById(id) == null){
    logger.info("Person deleted successfully!");
    }else{
        logger.info("Something went wrong! Person hasn't been deleted!");           
    }
}

并加载:

public Person getPersonById(int id) {
    session.beginTransaction();
    Person p = (Person) session.load(Person.class, id);
    logger.info("Person loaded successfully!");
    return p;
}

我什么也没收到。问题出在哪里?

根据我的理解,您应该在创建/删除操作后刷新上下文。刷新过程通过检测状态更改和执行 SQL 语句来将数据库状态与会话状态同步。

if(p != null){
        session.delete(p);
        session.getTransaction().commit();
session.setFlushMode(FlushModeType.COMMIT);
    }

您可以阅读有关刷新模式休眠刷新模式的信息。

deletePerson 中的提交在哪里? 和 getPersonById 中的再次提交?

修复您会看到的代码,即您没有通过 ID 1 取回实体,您将其删除。

最新更新