2017-03-23 113 views
2

我正在使用Spring Data JPA開展一個項目。我想將一些自定義行爲添加到存儲庫。是否可以使用Spring Data JPA使用EntityManager創建視圖?

目前,我試圖通過執行方法

repository類是如下創建視圖。

public interface MyQueryRepository extends JpaRepository<MyQuery, Long>, MyQueryRepositoryCustom { 
    public MyQuery findById(long id); 
    public list executeMyQuery(); 

} 

這是定製:

public class MyQueryRepositoryImpl implements MyQueryRepositoryCustom { 
    @PersistenceContext 
    private EntityManager entityManager; 

    public List executeMyQuery() { 
     return entityManager.createQuery("CREATE VIEW result_set AS select record FROM my_data").getResultList(); 
    } 
} 

Howeve,我碰到下面的錯誤。

[ERROR] [http-bio-8080-exec-10] ErrorCounter - line 1:1: unexpected token: CREATE 
antlr.NoViableAltException: unexpected token: CREATE 
    at org.hibernate.hql.internal.antlr.HqlBaseParser.statement(HqlBaseParser.java:198) [hibernate-core-5.1.1.Final.jar:5.1.1.Final] 

以上代碼適用於SELECT查詢。

是否有任何其他方式,我可以使用實體管理器創建視圖。在此先感謝

回答

2

要使用getResultList(),您必須使選擇而不是CREATE? UPDATE?或刪除。

所以,如果你想創建一個視圖,那麼你必須執行查詢,而不是getResultList(),創建一個視圖,我建議使用CreateNativeQuery例如:如果你想

Query q = entityManager.createNativeQuery("CREATE VIEW result_set AS 
              select record FROM my_data"); 
q.executeUpdate(); 

否則從您的查詢中獲取值,然後您必須將您的查詢更改爲SELECT something FROM result_set

相關問題