我正在使用进行一个项目。我想在存储库中添加一些定制的行为。
目前,我正试图通过执行方法来创建一个视图
存储库类如下所示。
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]以上代码适用于选择查询。
还有其他方法,我可以使用实体管理器创建视图吗?提前感谢
发布于 2017-03-23 07:11:27
要使用getResultList(),您必须使选择而不是创建?最新消息?或者删除。
因此,如果您想要创建一个视图,那么您必须执行您的查询,而不是getResultList(),以创建我建议使用CreateNativeQuery的视图,例如:
Query q = entityManager.createNativeQuery("CREATE VIEW result_set AS
select record FROM my_data");
q.executeUpdate();否则,如果希望从查询中获取值,则必须将查询更改为SELECT something FROM result_set。
https://stackoverflow.com/questions/42969372
复制相似问题