有时很难清除(或存在性能问题)删除对实体的所有引用。
例如,我有一个Person对象,它与另一个Person对象有关系。
当我删除一个Person时,我不想删除她可以拥有的所有关系,只是因为有时此Person对象不知道在何处引用了它。因此,如果我想清除所有引用,则必须执行额外的sql工作,这可能会导致性能问题。
在理想的世界中,我想删除Person对象,并且当另一个Person对这个Person进行引用时(因为它在其关系中具有其ID),只需返回null即可。
事实是JPA抱怨
javax.persistence.EntityNotFoundException: No row with the given identifier exists
有没有一种方法可以强制JPA返回空引用而不是这种情况下的异常?
您可以将@NotFound批注与值一起使用NotFoundAction.IGNORE,如果不存在关联的实体,则它将返回null。
NotFoundAction.IGNORE
请注意:如果在集合中使用它,而hibernate找不到条目之一,它将在集合中添加一个空值,这很烦人。为避免这种情况,您可以将集合包装在跳过空值的集合中。