Java Spring数据:如何通过ID获取相同的实体

Java Spring数据:如何通过ID获取相同的实体,java,spring,mongodb,spring-data,Java,Spring,Mongodb,Spring Data,如何使Spring数据在每次调用findById(ID)时按ID返回相同的实体? 如果我调用两次,我会得到两个相等的对象,但现在是同一个,所以我对其中一个执行的操作不会影响另一个 obj1 = objectRepo.findById("testID").orElse(null); obj2 = objectRepo.findById("testID").orElse(null); obj1.setX("Y"); System.out.println(obj1.equals(obj2)); //f

如何使Spring数据在每次调用findById(ID)时按ID返回相同的实体?
如果我调用两次,我会得到两个相等的对象,但现在是同一个,所以我对其中一个执行的操作不会影响另一个

obj1 = objectRepo.findById("testID").orElse(null);
obj2 = objectRepo.findById("testID").orElse(null);
obj1.setX("Y");
System.out.println(obj1.equals(obj2)); //false
是否可以只在配置文件中执行此操作?
我正在使用Spring 5.0.0和Spring数据MongoDB 2.0.0。M7

这两个对象都没有更新。实际场景是这样工作的:

为此,您需要一些缓存

按照本文使用Redis缓存MondoDB

架构如下所示

  • 对于find操作,如果实体为int,则缓存将返回它
  • 否则从数据库中获取对象。将其放入缓存并返回
  • 对于每次更新,请使缓存项无效或更新它

您是否覆盖了与
obj
对应的类的equals方法?不仅具有相同引用的对象将相等。在本例中,spring为每个查询创建新对象,即使对象内容匹配。是的,它被重写,返回此.x.equals(other.x),但我需要obj1和obj2是同一个对象,obj1==obj2(相同链接)。在执行查询时,spring实例化这些对象时,无法实现obj1==obj2。单独实例化,不同引用