2017-03-23 84 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

相关问题