在Apache Cayenne中,对象的无效状态是由Cayenne提供的ObjectContext负责跟踪的。当对象的属性发生更改时,Cayenne会自动将对象标记为无效状态。但是,如果您想完全控制对象的有效性,可以使用以下方法来避免Cayenne使对象无效:
ObjectContext context = ... // 获取对象上下文
SomeEntity object = ... // 获取要操作的对象
context.setInvalidatingObjects(false);
// 对对象进行更改
object.setName("New Name");
context.setInvalidatingObjects(true);
ObjectContext context = ... // 获取对象上下文
SomeEntity object = ... // 获取要操作的对象
context.unregisterObjects(object);
// 对对象进行更改
object.setName("New Name");
请注意,这些方法需要谨慎使用,因为它们可能会导致对象状态不一致。通常情况下,Cayenne会自动处理对象的无效状态,并确保它们在必要时进行刷新。因此,只有在特定场景下才建议使用这些方法。