spring jpa查詢視圖


這段時間在項目中用到的spring+springmvc+hibernate+jpa框架,今天遇到一個問題:如何用原裝的jpa查詢視圖?

使用過jpa的朋友都知道,這是個很難受的問題,我在網上找了半天也沒找到簡單的答案,大部分都是先建立視圖有關的表和類做關聯,然后再手寫SQL,很是麻煩,而且最要命的是,數據庫表不是我建的,表很多,很亂,后來求助大佬,得到一個解決辦法:

  1.使用原生SQL解決,即使用EntityManager類,然后用object[]數組接收;

  2.由於做表和實體類的關聯,就沒有辦法在dao層寫方法,就無法繼承jpa,要不這樣就會報錯,所以方法是建立在service實現層

  3.具體代碼如下:注(由於是內網,所以在網上摘錄了這段代碼,地址:https://blog.csdn.net/qq_14853889/article/details/84447989

StringBuffer querySql = new StringBuffer("select a.* from art_user a , art_user_authority b where a.id = b.user_id and a.company_id = :companyId " +
                " and b.authority_name =  :authorityName");
        Query query = entityManager.createNativeQuery(querySql.toString() , User.class);
        query.setParameter("companyId" , companyID);
        query.setParameter("authorityName" , authorityName);
        List<User> list = query.getResultList();
}

  其實這樣寫感覺並不合適,后期有什么合適的解決方案就會替換掉,如果有哪位大佬有什么方法也可以提出來大家一塊參考一下。

  補充:

  這幾天在網上又找了找,發現@Table是可以用來注解視圖的,但是在視圖沒有主鍵,而entity不加主鍵會報錯,所以要加一個@Id空主鍵,其他的和普通表沒什么區別。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM