2012-12-19 29 views
4

我有很多EntityManager,每個模式,我有(我用entity-mappings文件與架構映射新興市場)之一。有用。管理@NamedNativeQuery和模式

當我使用@NamedQuery它的工作就像一個魅力,但是當我用@NamedNativeQuery模式不被使用。我必須符合SELECT foo FROM schema.table

它是正確的行爲?

我認爲這是不可能的參數@NamedNativeQuery動態傳遞架構(我相信,只有列可以是動態不表或模式或其他任何東西),所以我如何使用@NamedNativeQuery與動態模式嗎?從文檔

回答

2

摘錄:

  • NamedNativeQuery:指定了一個名爲原生SQL查詢。查詢名稱的範圍是持久性單元。
  • NamedQuery:指定Java持久化查詢語言的靜態,命名查詢。查詢名稱的範圍是持久性單元。

它沒有直接指定NamedNativeQuery是靜態的,但兩者都是相同的作用域&不能事後改變&這是期望的行爲。

命名查詢均值由多個模塊進行訪問 - 應用廣泛,由唯一的名稱標識,所以它們是靜態&不變。您可以嘗試動態&建立一個查詢字符串可以從它創建一個本地查詢,而不是命名原生查詢。

+0

我知道我能做到這一點。那麼對於你來說,使用動態模式命名的本機查詢是不可能的? Ty –

+1

@OlivierJ。是的,不能通過表/架構等作爲參數來命名查詢 –

+0

確定我會動態生成我的查詢字符串。謝謝 –