我正在使用 Spring - Hibernate 来控制我的应用程序中的模型。这些模型相互链接(一对多,多对多,几乎是各种关系),现在我在删除一个被其他实体使用的实体时遇到了问题。问题是我想显示详细消息,该消息准确地告知其他对象(类型、名称)正在使用我要删除的实体。这不是 Hibernate 向我抛出的关于违反约束的常见信息。
例如:Car --> Person, House --> Person
; 然后,当我删除一个拥有汽车和房屋的人时,消息将显示“有汽车(名为福特野马)和房屋(名为 MyHouse)与此人相关联”。
1. 那么Hibernate有什么方法支持这个要求吗?我想这个特定要求没有实现。
2.如果没有任何实用程序可用于此问题,我正在考虑以下解决方案:
- 在每个实体类(即Person)中,我将定义检测从该实体到其他实体的链接的所有检查方法,例如:
class Person {
// Properties
// Checking methods, return type and name of linked objects
public Map<String, String> getLinkedCars() {
// Query to DB to get linked cars
// return a Map contain Class name along with object name <Car, Ford Mustang>
}
public Map<String, String> getLinkedHouses() {
// Query to DB to get linked houses
// return a Map contain Class name along with object name <House, MyHouse>
}
}
-然后,在删除Person实体之前的服务中,我将使用反射机制收集检查方法(名称以“getLinkedXXX”开头)的结果,并构建详细的错误消息。
那么这个解决方案好吗?关于 MVC 的性能和约定(因为我必须在模型类中查询数据)?
谢谢您的帮助。