spring data jpa 操作pipelinedb 的continuous view 與stream
阿新 • • 發佈:2018-12-21
一、 由於pipelinedb是postgreSQL的擴充套件,因此相關依賴於配置都合整合postgreSQL是一樣的。
springboot + spring data jpa + postgreSQL整合: https://www.cnblogs.com/zhaohuaxishi/p/10120593.html
二、pipelinedb + spring data jpa 整合時出現的問題及解決方案
後通過spring data jpa 操作 pipelinedb,來統計每日的線上時長. 問題1: spring data jpa 是使用原生sql語句傳送資料到 pipeline的stream中,然後pipelinedb 的continuous view 自動處理stream中資料,但是由於continous view是檢視資料,沒有主鍵id,因此無法使用spring data jpa的自動型別對映來查詢 continuous view中的資料. 思路1: 給 continuous view 建立id,以便能和實體類對映,然後進行查詢. 思路2:通過原生sql語句去查詢 需要的資料 最終解決方案 (驗證通過): 思路1+思路2同時存在. 方案解析: 由於spring data jpa 是使用的hibernate來對映和控制持久化模型,因此,如果需要將 continuous view的資料轉換為實體類模型,需要滿足hibernate的要求—主鍵id存在。但是由於continuous view中的資料是從stream或其他table中得來的,因此id也必須從其他stream或table拿取,所以只需給stream中設定id屬性或table中設定id屬性即可。 但是,由於stream的特點,因此在table中設定id屬性最為方便和簡潔。 table的屬性欄位內容:
查詢continuous view 資料時使用的原生sql語句:
查詢結果:成功