亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Inherited() 標志:propertyName 與 storageName

Inherited() 標志:propertyName 與 storageName

PHP
藍山帝景 2023-07-08 20:41:55
我正在尋找一些信息/文檔,這有助于我理解為什么在繼承的情況下,(ManyToOne 或 OneToOne)連接不是使用存儲名稱完成的,而是使用相應實體對象類的屬性名稱......有人可以嗎請解釋一下基本機制?我指的特殊情況是,當連接字段不是外鍵時。特別是我指的是這個代碼部分:ManyToOneJoinBuilder.php,第 57 行當不涉及外鍵時,將使用 propertyName 進行連接,但顯然這不能與 storageName 相同...并且在執行生成的 sql 時生成錯誤!
查看完整描述

1 回答

?
阿波羅的戰車

TA貢獻1862條經驗 獲得超6個贊

DB表中需要有額外的字段,其中外鍵以讀取優化的方式保存。這里的約定是使用屬性名稱作為列名稱。

來自文檔

對于每個繼承的字段,您必須向實體添加一個二進制列,用于以讀取優化的方式保存繼承的信息

如果您查看 的列,product您會發現名為manufacturer、tax或 的列deliveryTime。這些是存儲 FK 獲取的列,用于連接匹配關聯。

這對于數據抽象層來說是必要的,因此它可以連接關聯的表,而無需讀取父實體的行。這極大地提高了性能,因為您可以在一個 SQL 查詢中加入多個關聯,并且數據庫可以對該查詢進行優化。否則,您需要首先讀取實體和父實體,只是為了弄清楚某些關聯是否從父實體繼承到子實體,以及在哪個 FK 上執行連接。

查看完整回答
反對 回復 2023-07-08
  • 1 回答
  • 0 關注
  • 110 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號