如何在 Hibernate 原生查询中使用常量?
How can I use constants in Hibernate native query?
我正在尝试在 Spring Data JPA 存储库中对 SQLServer 进行简单查询,使用 @Query 批注创建本机查询。 Hibernate 正在掌握它并且似乎无法解析常量(我认为)。
错误是:org.hibernate.loader.custom.NonUniqueDiscoveredSqlAliasException: Encountered a duplicated sql alias [] during auto-discovery of a native-sql query
查询是:
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 = ?
由于每个实际字段都是实际 table 的别名,并且投诉是关于重复的 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 语句中有多个 non-table-column-names 列。给这些列中的每一列一个别名应该可行。换句话说,这样的事情应该有效:
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 = ?
我正在尝试在 Spring Data JPA 存储库中对 SQLServer 进行简单查询,使用 @Query 批注创建本机查询。 Hibernate 正在掌握它并且似乎无法解析常量(我认为)。
错误是:org.hibernate.loader.custom.NonUniqueDiscoveredSqlAliasException: Encountered a duplicated sql alias [] during auto-discovery of a native-sql query
查询是:
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 = ?
由于每个实际字段都是实际 table 的别名,并且投诉是关于重复的 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 语句中有多个 non-table-column-names 列。给这些列中的每一列一个别名应该可行。换句话说,这样的事情应该有效:
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 = ?