You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检测Hyperon持久化引擎中的变更?基于v1.5.54的实体校验咨询

Hyperon 1.5.54:Property层面的实体修改检查与变更标记

针对你使用Hyperon 1.5.54及Hyperon持久化引擎的场景,答案是肯定的——你完全可以从Property对象层面检查实体是否被修改,且实体本身也会跟踪并标记出具体哪些内容发生了变更。下面是具体的细节和用法:

1. 检查单个Property是否被修改

Hyperon的Property对象内置了状态跟踪能力,你可以直接调用它的isModified()方法来判断该属性是否被修改过。这个方法会返回一个布尔值,true表示属性值自上次持久化后发生了变更,false则表示没有变化。

示例代码:

// 假设你已经获取到目标实体对象
YourEntityType targetEntity = hyperonSession.getEntity("your_entity_id");

// 获取特定Property对象
Property statusProp = targetEntity.getProperty("status");

// 检查该属性是否被修改
if (statusProp.isModified()) {
    System.out.println("Status属性已经被修改");
}

2. 获取实体中所有已修改的Property集合

除了单个属性的检查,实体对象还维护了一个已修改属性的集合,你可以通过getModifiedProperties()方法获取所有发生变更的Property列表。这个方法会返回一个Collection<Property>,里面包含了所有自上次持久化后被修改过的属性。

更实用的是,每个Property对象还提供了getOldValue()和getValue()方法,让你可以对比修改前后的具体值:

示例代码:

// 获取实体所有已修改的属性
Collection<Property> modifiedProps = targetEntity.getModifiedProperties();

// 遍历并输出变更详情
for (Property prop : modifiedProps) {
    System.out.printf("属性[%s]已变更:旧值=%s,新值=%s%n", 
        prop.getName(), prop.getOldValue(), prop.getValue());
}

注意事项

  • 这些状态跟踪功能是Hyperon持久化引擎默认提供的,只要你使用的是官方的持久化实现,无需额外配置即可生效。
  • 当你调用实体的save()或persist()方法完成持久化后,实体的修改标记会被重置,isModified()会回到false状态,getModifiedProperties()也会清空。

内容的提问来源于stack exchange,提问作者AnnKate

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:16:33