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

在PolicyCenter 9中如何将策略数组存储到Person.etx实体扩展中

Guidewire PolicyCenter V9 扩展Person实体存储策略数组方案

核心步骤说明

1. 确保etx字段配置正确持久化

你已经在Person.etx中创建了数组字段,需要补充持久化配置才能让数据存入数据库,示例配置如下:

extension entity Person {
    field policies : Policy[] {
        label = "关联保单列表"
        persist = true  // 必须设置为true,否则仅内存生效
        cascade = "save-update"  // 可选:设置级联操作,比如保存Person时自动同步关联的Policy状态
    }
}

2. 生成数据库映射结构

配置完成后,在PolicyCenter的开发环境中执行数据库迁移命令,生成对应的关联存储表:

gw dev db migrate

PolicyCenter会自动创建Person与Policy的关联表,无需手动建表。

3. 业务逻辑中关联保单到Person

在Groovy服务类、页面脚本或事务代码中,通过以下方式将Policy实例添加到Person的数组字段中:

// 获取目标Person实例
def targetPerson = Person.get("person-123")
// 获取需要关联的Policy实例
def targetPolicy = Policy.get("policy-456")

// 添加到数组并保存
targetPerson.policies.add(targetPolicy)
targetPerson.save()

注意:操作必须在事务上下文内执行,确保数据持久化成功。

4. 验证关联数据

可通过查询Person实体的policies字段验证关联结果:

def person = Person.get("person-123")
person.policies.each { policy ->
    log.info("关联保单号:${policy.policyNumber}")
}

注意事项

  • 避免循环引用:如果Policy实体也需要反向关联Person,需在Policy.etx中同步扩展Person数组字段,但单向关联无需此操作。
  • 权限控制:操作Person和Policy的代码需添加对应的权限注解(如@RequiresPermission("PersonEdit")),避免权限报错。
  • 性能优化:若关联保单数量较多,建议使用分页查询替代直接加载整个数组,避免内存占用过高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 22:37:47