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 抑制而產生空值。