Alfresco中alf_node_properties表actual_type_n、persisted_type_n允许值及映射问询
Alfresco alf_node_properties表字段说明:actual_type_n与persisted_type_n
一、actual_type_n 允许取值
该字段存储属性的实际逻辑数据类型,对应Alfresco核心定义的TypeCategory枚举,具体取值及对应类型:
0: 字符串(String)1: 布尔值(Boolean)2: 整数(Integer)3: 长整数(Long)4: 浮点数(Float)5: 双精度浮点数(Double)6: 日期(Date)7: 二进制数据(Binary)8: 节点引用(NodeRef)9: 序列化对象(Serializable)10: 分类(Category)11: 内容数据(ContentData)12: 权限(Permission)
二、persisted_type_n 允许取值
该字段表示属性在数据库中实际存储的物理类型,对应JDBC存储类型,允许值:
0: VARCHAR(用于存储文本类数据)1: BIGINT(用于存储数值或时间戳类数据)2: NUMERIC(用于存储高精度数值)3: BLOB(用于存储二进制或序列化对象)
三、二者映射细节
Alfresco的PropertyService会自动将逻辑类型(actual_type_n)转换为适合数据库存储的物理类型(persisted_type_n),核心映射规则:
- 字符串(0)、布尔值(1)、节点引用(8)、分类(10)、权限(12)→ 映射为VARCHAR(0)
- 长整数(3)、日期(6)→ 映射为BIGINT(1)(日期会转成毫秒时间戳存储)
- 整数(2)、浮点数(4)、双精度(5)→ 映射为NUMERIC(2)
- 二进制数据(7)、序列化对象(9)、内容数据(11)→ 映射为BLOB(3)
四、技术指引
- 禁止手动修改字段:这两个字段由Alfresco属性服务自动维护,手动修改会导致属性读取失败、数据损坏。
- 查看源码逻辑:类型映射的核心代码在
org.alfresco.repo.domain.node.ibatis.NodePropertyDAOImpl类中,可通过getPersistedType、mapActualTypeToPersisted方法查看具体转换逻辑。 - 自定义类型扩展:如需新增自定义属性类型,需扩展
TypeCategory枚举,并在属性服务中注册对应的存储类型映射,不要直接操作数据库字段。 - 异常排查:遇到属性读取异常时,可对比这两个字段的取值与映射规则,排查是否存在类型不匹配或数据损坏问题。
内容的提问来源于stack exchange,提问作者Sunny
相关产品推荐
相关产品推荐

