我正在使用Spring Data JPA开展项目。我想在存储库中添加一些自定义行为。
目前我正在尝试通过执行方法来创建视图
存储库类如下。
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();
}
}
但是,我收到以下错误。
[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查询。
还有其他方法,我可以使用实体管理器创建视图。提前致谢
答案 0 :(得分:4)
要使用getResultList()
,您必须选择而不是创建? UPDATE?或者删除。
因此,如果你想创建一个视图,那么你必须执行你的查询而不是getResultList()
来创建一个我建议使用 CreateNativeQuery 的视图,例如:
Query q = entityManager.createNativeQuery("CREATE VIEW result_set AS
select record FROM my_data");
q.executeUpdate();
否则,如果您想从查询中获取值,则必须将查询更改为SELECT something FROM result_set