2011-07-19 21 views
2

我有一個名爲ETL_TABLES的表,它駐留在公共模式中。在 我application.conf我有以下行:未找到關係play和postgres的錯誤(當表存在時)

hibernate.default_schema=public 

應該指的Postgres SEARCH_PATH設置爲public模式。

我有一個類Tables,與@Table(name="ETL_TABLES")註釋。 但是,當我嘗試訪問實體類,例如通過 Tables.findAll();然後錯誤說關係「public.etl_tables」 不存在。

表格存在於postgres公共架構上,那麼我在做什麼 這裏錯了?

+0

你連接到哪個服務器?它可能是你連接到另一臺服務器,例如本地主機? – Bohemian

+0

最有可能是一個名稱案例問題 - 引用和全部上限創建和未引用(因此所有小寫)的使用。更多信息 - http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS(查找「帶引號的標識符」) –

+0

我可以確保hibernate使用帶引號和全部大寫選項。我在@Table註釋中使用了大寫字母。由休眠生成的查詢是選擇tables0_.ID作爲ID0_,tables0_.COPY作爲COPY0_,tables0_.QUERY作爲QUERY0_,tables0_.TABLENAME作爲TABLENAME0_來自public.ETL_TABLES tables0_ – waalp

回答

0

Apperently在我們的配置,我需要寫這個創建實體時:@Table(NAME = 「\」 ETL_TABLES \ 「」)

所以我必須使用\「來表示選擇中所需的雙引號。

1

確保你已經設置PostgreSQL的話:

jpa.dialect=org.hibernate.dialect.PostgreSQLDialect 
+0

已經有一行jpa.dialect = org.hibernate.dialect.PostgreSQLDialect在我的application.conf中 – waalp

+0

也許你需要的是這行:hibernate.globally_quoted_identifiers = true – sdespolit

0

我遇到了這個問題,結果發現hibernate並不像映射的表名在實體中默認(我確信有一些配置某處可以重寫這個!)。所以它找不到t他關係'文章',但會找到'文章'或'文章'。希望這有助於誰來這個線程

相關問題