方法不会从数据库中删除 - JPA

时间:2015-10-14 08:52:05

标签: java jpa

我正在进行一项简单的测试。我在数据库中放了一个Project实体,然后将其删除。代码没有错误,但不删除实体。 main的代码和两种方法如下。欢迎任何帮助。

测试

public static void main(String[] args) {  
    EntityManager em = EmFactory.getEntityManager();  // My class gives EntityManagaer instances                            
    EntityTransaction tx = em.getTransaction();                                 
    Project p = new Project();
    p.setProjectKey("Key");
    ProjectDAO dao = FactoryDAO.newProjectDAO();

    dao.addProject(p);
    dao.deleteProject(p);

    em.close();                                                                
}

添加方法

public void addProject(Project project) {
    EntityManager em = EmFactory.getEntityManager();
    EntityTransaction tx = em.getTransaction();
    try{
        tx.begin();
        em.persist(project);
        tx.commit();
    }
    catch(PersistenceException e){
        tx.rollback();
        throw e;
    }
}

删除方法

public void deleteProject(Project p) {
    EntityManager em = EmFactory.getEntityManager();
    EntityTransaction tx = em.getTransaction();     
    try{
        tx.begin();
        p = em.merge(p);
        em.remove(p);
        tx.commit();
    }
    catch(PersistenceException e){
        tx.rollback();
        throw e;
    }
    em.close();     
}

1 个答案:

答案 0 :(得分:0)

您无需在uses TeeBrushDlg; procedure TForm1.FormCreate(Sender: TObject); var BrushDialog: TBrushDialog; begin BrushDialog:=TBrushDialog.Create(Self); Chart1.BackImage.Graphic:=BrushDialog.ImageCarbon.Picture.Graphic; end; 之前调用merge

  

为了从数据库中删除对象,必须先进行   检索,然后在活动事务中,它   可以使用remove方法删除。