Liferay中已为用户资源创建的自定义字段能否通过数据库访问?
Liferay用户自定义字段数据库访问说明
问题背景
按照以下标准流程为Liferay的用户资源创建了自定义字段:
- 进入控制面板,依次选择「配置-自定义字段」选项
- 选择资源类型为用户,点击其旁的「编辑」链接,选择「添加自定义字段」
目前这些自定义字段已经可以在页面正常显示,希望确认这类已创建的自定义字段是否能够通过Liferay对应的数据库进行访问。
核心答复
完全可以。这类通过控制面板配置的自定义字段,所有的定义信息、用户维度的实际取值,都会被Liferay默认持久化到内置的数据库表中,不需要额外开启特殊配置就可以直接通过SQL查询访问。
对应的数据存储规则
- 自定义字段的基础配置元数据(字段名称、字段数据类型、关联的实体类型、展示规则等定义信息),统一存储在
ExpandoTable、ExpandoColumn两张核心系统表中。你为用户实体创建的自定义字段,会通过实体类ID和其他类型的自定义字段(比如内容、文档的自定义字段)做明确区分,不会出现数据混淆。 - 每个用户对应的自定义字段实际值,会根据字段类型分类存储在
ExpandoValue关联的系列表中,所有值都会通过用户ID和用户基础信息表User_做关联,查询时可以通过关联表映射,把自定义字段值和用户基础信息匹配对应。
注意:不建议直接在数据库层面手动修改自定义字段的取值。Liferay在写入自定义字段值时会同步做缓存更新、搜索索引构建、权限校验关联,直接修改数据库会导致前端页面展示、全局搜索结果和数据库实际值不一致,后续排查问题的成本很高。如果需要批量操作自定义字段数据,建议通过Liferay官方提供的Expando API完成。
内容的提问来源于stack exchange,提问作者Lakshmi
相关产品推荐
相关产品推荐

