我很好奇当我创建对象时应该得到什么结果,然后我删除对象然后我尝试从数据库加载这个对象。我想它应该是“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;
}
我一无所获。有什么问题?
答案 0 :(得分:0)
deletePerson
中的提交在哪里?并在getPersonById
中再次提交?
修复你看到的代码,你没有通过你删除它的ID获回实体。
答案 1 :(得分:0)
根据我的理解,您应该在创建/删除操作后刷新上下文。刷新进程通过检测状态更改和执行SQL语句来同步数据库状态和会话状态。
if(p != null){
session.delete(p);
session.getTransaction().commit();
session.setFlushMode(FlushModeType.COMMIT);
}
您可以阅读有关刷新模式Hibernate flush mode.
的信息