当前位置: 首页 > 知识库问答 >
问题:

在Hibernate的HQL中使用“SQL_NO_CACHE”语句

西门振
2023-03-14

我正在使用hibernate 4.x,想在HQL查询中设置MySQL的“SQL_NO_CACHE”语句

@Query("FROM mytable t WHERE id=1");

目前生产

select * from mytable where id=1

但我想要

select SQL_NO_CACHE * from mytable where id=1

但我不知道怎么做。

使用本机查询没有问题,但所有查询都是用HQL编写的,比本例复杂得多。因此,我得到了一个<code>QuerySyntaxException:意外的标记</code>异常,因为在hibernate文档中无论如何都没有记录该语句。

http://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html/ch16.html

共有2个答案

袁高峰
2023-03-14

使用StatementInspector更改生成的SELECT语句。关于如何使用它,请参阅相关问题。

巩阳秋
2023-03-14

可以创建一个SQL_NO_CACHE有此子句的视图。然后,当Hibernate运行SQL查询时,您可以覆盖PhysicalNamingStrategyStandardImpl.to物理表名,并更改以获取视图名称而不是表名。例如,默认名称为“mytable”,视图名称为“vw_mytable”,然后在命名表之前连接“vw_”。

在属性"hibernate.physical_naming_strategy"中的持久化文件中,将此实现从物理命名战略标准Impl放入,您的查询将使用子句SQL_NO_CACHE。

 类似资料:
  • 问题内容: 我正在使用和。我以前在sql中使用过正则表达式,现在是我第一次在HQL中使用它。 这是我的hql,当我不带功能运行它时,它按预期运行。但是我不能用表达式执行它。 它说.. 嵌套的异常是org.hibernate.hql.ast.QuerySyntaxException:意外的AST节点:(靠近第1行,第66列..... 请帮助,如何在hibernate本机查询中使用?或其他替代方法。

  • 我正在使用oracle 10g和hibernate 3.3.2。我以前在sql中使用过正则表达式,现在我第一次在HQL中使用它。 这是我的hql,当我在没有类似regex_的函数的情况下运行它时,它会按预期运行。但我无法用类似正则表达式的表达式执行它。 它说... 嵌套异常是org.hibernate.hql.ast.QuerySynTaxException:意外的AST节点:(靠近第1行,第66

  • 问题内容: 有什么办法可以在HQL中执行以下操作: 问题答案: 我想你可以(3.6,4.3) [联编辑] …对于那些子句: “简单”情况和“搜索”情况,

  • 问题内容: 与hibernate和spring社交一起工作, 我正在尝试通过电子邮件地址查询数据库。当我执行此查询时: 公共帐户findAccountByUsername(String username){ = “+username; Query query = session.createQuery(selectQuery); @SuppressWarnings(“unchecked”) Lis

  • persistence.xml文件 http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd“>org.hibernate.ejb.hibernatePersistence

  • 1. 前言 本节课程和大家一起学习 Hibernate 中的 HQL ( Hibernate 查询语言)。通过本节课程的学习,你将了解到: HQL 基础语法; HQL 查询的具体实现。- 2. HQL 查询?前面不是讲过?用过吗? 但是,前面的查询都是简单查询,真实项目中的查询需求要远比这个复杂。仅仅依靠 get()、load() 是远远达不到要求。 Hibernate 提供了灵活多样的查询机制,