首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Hibernate原生查询中使用常量?

如何在Hibernate原生查询中使用常量?
EN

Stack Overflow用户
提问于 2015-11-05 21:11:09
回答 1查看 1.6K关注 0票数 1

我试图在Spring存储库中对SQLServer执行一个简单的查询,使用@Query注释来创建本机查询。Hibernate正在掌握它,似乎无法解析常量(我认为)。

错误是:org.hibernate.loader.custom.NonUniqueDiscoveredSqlAliasException: Encountered a duplicated sql alias [] during auto-discovery of a native-sql query

查询是:

代码语言:javascript
复制
select convert(varchar,((a.achan - a.freq) / 100))
       +'_'+
       convert(varchar,((a.bchan - a.freq) / 100))
     , convert(varchar,((a.bchan - a.freq) / 100)) 
from channel_src as a 
where a.discriminator = ?

由于每个实际字段都被别名为实际表,而且抱怨的是一个重复的空别名,所以我假设它不喜欢100?如果没有,有什么方法可以预测它被窒息了吗?参数的解析与rollback语句之间没有日志线。

编辑:这是存储库上下文中的查询

代码语言:javascript
复制
public interface ChannelMatrixRepository extends JpaRepository<ChannelMatrix,Integer>
{
    @Query(value = "select convert(varchar,((a.achan - a.freq) / 100)) +'_'+ convert(varchar,((a.bchan - a.freq) / 100)) , convert(varchar,((a.bchan - a.freq) / 100)) from channel_src as a where a.discriminator = ?1", nativeQuery = true)
    Map<String, String> findAllBySquelchLevel(int sk);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-30 21:27:18

我相信这个错误:遇到了重复的sql别名[]

是由于select语句中有多个列是非表列名称造成的。给这些列中的每一列都提供别名应该有效。换句话说,像这样的东西应该能起作用:

代码语言:javascript
复制
select 
  convert(varchar,((a.achan - a.freq) / 100)) +'_'+
       convert(varchar,((a.bchan - a.freq) / 100)) COLUMN_ONE
     , convert(varchar,((a.bchan - a.freq) / 100)) COLUMN_TWO
from channel_src as a 
where a.discriminator = ?
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33554851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档