2015-11-05 29 views
1

我正在嘗試使用@Query註釋創建本機查詢來對Spring Data JPA存儲庫中的SQLServer執行簡單查詢。 Hibernate正在掌握它,似乎無法解析常量(我認爲)。如何在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); 
} 
+0

你可以在創建查詢對象時添加一些代碼嗎? – Jamie

+0

@Jamie - 我在代碼中添加了這個問題,雖然它大部分只是一個魔法咒語......不幸的是,由於查詢是'native = true',我不能用'select new map(...'我在JPQL中會這樣做,但是,這個錯誤並沒有像SQL解析問題那樣指出類型/簽名問題 – user1944491

回答

1

我相信這個錯誤: 遇到重複的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 = ? 
+1

現在你指出了它,這是絕對有道理的。 – user1944491