簡體   English   中英

如何在Hibernate本機查詢中使用常量?

[英]How can I use constants in Hibernate native query?

我正在嘗試使用@Query批注對Spring Data JPA存儲庫中的SQLServer進行簡單查詢,以創建本機查詢。 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 = ?

由於每個實際字段都別名為實際表,並且投訴是關於重復的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 = ?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM