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

时间:2014-12-08 10:45:50

标签: java database hibernate

我很好奇当我创建对象时应该得到什么结果,然后我删除对象然后我尝试从数据库加载这个对象。我想它应该是“null”。在一个表中,我在第二个表中收到“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;

}

我一无所获。有什么问题?

2 个答案:

答案 0 :(得分:0)

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

修复你看到的代码,你没有通过你删除它的ID获回实体。

答案 1 :(得分:0)

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

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

您可以阅读有关刷新模式Hibernate flush mode.

的信息
相关问题