0

在我正在处理的应用程序中,有人将域对象拆分为不同的持久性单元。来自不同持久性单元的表之间的连接基于包含 ID 的列,例如:

TableA             TableB
ID:Int             ID:int
Field1             TableA_ID:Int
Field2             ...  
...

TableA_ID只是一个普通的 int,没有对其施加任何约束。现在我需要删除父实体(假设TableA还有所有连接TableB的 s 实体)。在外键关系的情况下,这将是一个简单的 CASCADE 删除。但在这种情况下,我应该如何进行?数据库触发器 - 我想将所有内容都保留在 JPA 中。

谢谢!

4

1 回答 1

0

如果您有 TableA 和 TableB 的 DAO,您可以通过这种方式使用协作来实现编写服务方法的解决方案(只是一个示例):

@Repository
class TableADAO {
  void deleteById(int id) {
    // perform deletion where TableA.ID == id
  }
}

@Repository
class TableBDAO {
  void deleteTableAChildren(int id) {
    // perform deletion where TableA_ID == id
  }
}

@Service
class MyService {
  private TableADAO tableADAO;
  private TableBDAO tableBDAO;

  @Transactional
  // Annotating as transactional to prevent
  // invalid data
  void deleteTableACascade(int idTableA) {
    tableBDAO.deleteTableAChildren(idTableA);
    tableADAO.deleteById(idTableA);
  }
}

这是一个合理的解决方案吗?

于 2013-08-08T14:53:31.880 回答