Hibernate HBM 映射查询
<when_to_use>
当查询 Hibernate .hbm.xml 映射文件时加载此技能——提取实体-表绑定、属性-列映射、集合关系(set/list/bag)、外键发现,或者在拥有 60+ 个 HBM 文件的企业持久层中运行批量扫描。
</when_to_use>
针对 Hibernate .hbm.xml 映射文件的 dasel v3 查询的领域技能。
属性语法(必需): 在 dasel 友好模式(默认)下,XML 属性使用 - 前缀。name → -name,table → -table,column → -column。
解析器标志(必需): 始终显式传递 -i xml。不要依赖 .hbm.xml 文件的自动检测。
实体发现
# 完全限定的 Java 实体类名称
cat User.hbm.xml | dasel -i xml 'hibernate-mapping.class.-name'
# 实体映射到的数据库表
cat User.hbm.xml | dasel -i xml 'hibernate-mapping.class.-table'
属性列映射
# 实体中所有映射的 Java 属性名
cat User.hbm.xml | dasel -i xml 'hibernate-mapping.class.property.map(-name)'
# 映射属性的所有数据库列名
cat User.hbm.xml | dasel -i xml 'hibernate-mapping.class.property.map(-column)'
集合关系
<set>、<list>、<bag>——一对多关系。
# 所有 set 集合名称(一对多)
cat User.hbm.xml | dasel -i xml 'hibernate-mapping.class.set.map(-name)'
# 所有 list 集合名称
cat User.hbm.xml | dasel -i xml 'hibernate-mapping.class.list.map(-name)'
外键发现
<many-to-one>——指向其他实体的外键列。
# 所有外键列名
cat User.hbm.xml | dasel -i xml 'hibernate-mapping.class.many-to-one.map(-column)'
# 所有被引用的实体类名(FK 目标)
cat User.hbm.xml | dasel -i xml 'hibernate-mapping.class.many-to-one.map(-class)'
批量实体-表映射
提取所有 .hbm.xml 文件中的实体→表对。写入 /tmp/ — 切勿写入源代码树。
for f in $(fdfind -e hbm.xml .); do
entity=$(cat "$f" | dasel -i xml 'hibernate-mapping.class.-name' 2>/dev/null)
table=$(cat "$f" | dasel -i xml 'hibernate-mapping.class.-table' 2>/dev/null)
echo "$entity -> $table"
done > /tmp/entity_table_map.txt
格式错误的文件和缺少的属性将通过 2>/dev/null 抑制产生空值。