[英]Mapping derived columns to POJOs with RecordMapper in JOOQ
我有一個表格票證,我在其中插入票證,並有一個字段 createdBy 存儲該記錄創建者的 UserId Integer。 在獲取期間,我加入了用戶表並連接了名字和姓氏,我的 DTO 具有連接創建者名稱的字段 createdBy。 如何映射派生字段? 這是我的參考https://www.jooq.org/doc/3.13/manual/sql-execution/fetching/pojos/我似乎找不到提供這樣的場景
問題不在於加入。 問題是映射連接后派生的字符串 createdBy 而在由 jooq 生成的記錄類中是一個整數,因為在數據庫表中我存儲了 userId。
List<MyTickets> mytickets = create.select(....FIELDS).from(TICKETS_).fetch().into(MyTickets.class);
@Override
public Field<Integer> field9() {
return Tickets.TICKETS_.CREATEDBY;
}
在我的回答中,我將假設您的計算列將被稱為CREATED_BY_NAME
,而不是CREATED_BY
,這是一個已經被采用的名稱,以避免混淆。
如果這是您經常做的事情,那么您有幾個可能對您感興趣的選項:
CREATED_BY_NAME
列。 許多數據庫也可以插入/更新視圖,因此在使用視圖替換表時不會有很大的損失。 對於您的客戶端邏輯,此列的來源將是透明的。 如果您想使用UpdatableRecord
,您必須使用合成主鍵標志告訴 jOOQ 的代碼生成器視圖的底層主鍵是什么。GENERATED ALWAYS AS ...
語法(或您的方言用於該語法的任何內容)。 並非所有方言都支持這一點,但這是一個很好的功能,無需額外的視圖對象即可將表轉換為視圖。CREATED_BY_NAME
列實現所有 getter/setter。CREATED_BY_NAME
)並分別映射CREATED_BY_NAME
列。 只需保留對 jOOQ Result
和/或Record
的引用,並對其執行多個 map / intoXYZ()
調用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.