在我的 java 应用程序中,我在不同的地方多次使用相同的对象。这意味着当比较这些对象时,equals 方法返回 true。现在我想更新一个对象并对所有相等的对象进行更改。你知道是否有这样的模式吗?
我的具体用例是:我正在使用 JSF、JPA 和 CDI。用户在允许他编辑分离实体 EntityA 的网页上。该页面是会话范围的。EntityA 有两个对 EntityB 的引用(也是分离的)。这些对象可以相同。不是同一个引用,但它们可能是相等的。
@Entity
public class EntityA {
@OneToOne()
private EntityB entity1;
@OneToOne();
private EntityB entity2;
}
JSF 视图允许用户从选择列表中选择 entity1 和 entity2。它还显示了这些 EntityB 的一些详细信息,并且允许用户单独编辑 entity1 和 entity2。一切正常,除了用户为 entity1 和 entity2 选择了相同(相等)的 EntityB。然后,仅更新对这些对象的引用。当然 entity1 和 entity2 是两个不同的 JPA 实体,并且不是同一个引用。但我想将更改分发到 EntityB 的所有分离实例。我的应用程序中有数百次这种情况,所以我不想关心,在哪些情况下必须更新哪些对象。我需要一些自动为我做的解决方案。一个想法是将我在此会话中使用的所有对象保留在特殊列表中,并且每次提交和处理请求时都会遍历此映射并更改所有相等的对象。但是他的声音很脏。也许有一个内置的 JPA 函数可以使所有相等的对象具有相同的引用。我不知道这是否可能。您对此有解决方案吗?谢谢。