java - 如何在 Hibernate native 查询中使用常量?

标签 java sql-server hibernate spring-data-jpa

我正在尝试使用 @Query 注释创建 native 查询,对 Spring Data JPA 存储库中的 SQLServer 进行简单查询。 Hibernate 正在掌握它,并且似乎无法解析出常量(我认为)。

错误是:org.hibernate.loader.custom.NonUniqueDiscoveredSqlAliasException:在自动发现 native SQL 查询期间遇到重复的 sql 别名 []

查询是:

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 = ?

由于每个实际字段都有实际表的别名,并且提示是关于重复的 NULL 别名,我假设它不喜欢 100?如果没有的话,有什么办法可以预测它被什么东西噎住了吗?参数解析和回滚语句之间没有日志行。

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

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);
}

最佳答案

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

这是因为您的 select 语句中有多个非表列名称的列。为这些列中的每一列指定一个别名应该可行。换句话说,类似这样的事情应该有效:

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 = ?

关于java - 如何在 Hibernate native 查询中使用常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33554851/

相关文章:

java - 有人可以告诉我代码中的错误吗?

java - 如何从 Firestore 中的集合中检索所有文档?

java - 在 Java 中为 ws-security UsernameToken 实现密码摘要

sql - 使用 INNER JOIN 更新 SQL Server 中的多个表

sql - 数据库复制 MSSQL 2000 至 2005

java - 如何提取隐藏在HibernateProxy后面的原始实体类?

java - 处理线程中的 Activity

java - 从 ArrayList 中删除重复的元组 - Java

sql-server - Microsoft SQL Server Express 是否可用于 Linux 中的生产?

java - 为什么 Hibernate 不需要参数构造函数?