2013-04-10 75 views
2

我們在我們的web應用程序中使用Play Framework 2.1。我們希望在我們的應用程序數據庫的PostgreSQL數據庫中顯式設置數據庫模式(不是public模式)。我該如何設置它?如何在Play中設置默認的PostgreSQL模式?

+0

你在說使用進化腳本還是什麼?否則,只需使用psql在數據庫中使用所需的任何模式。還是我完全誤解了? – maba 2013-04-10 13:22:37

+0

當我嘗試從數據庫訪問表時,出現PersistenceException。因爲系統不能找到表。它假定我使用公共模式,因此我應該告訴框架使用其他名稱模式。 – 2013-04-10 13:35:18

回答

3

據我所知,從我以前的嘗試。您應該爲每個您想要的模型定義您的schema名稱。它應該是這樣的:

import play.db.ebean.Model; 
import javax.persistence.Entity; 
import javax.persistence.Table; 

@Entity 
@Table(schema = "schema2") 
public class TableOnSchema2 extends Model { 
    ... 
} 

也許這個解決方案會額外的努力來定義每個模型的模式名稱。因爲,我不知道是否可以設置配置值來指定應用程序的默認數據庫方案。但它適用於我!

希望這會幫助你.. :)

2

如果你的表都位於公共方案之外,做的最好的事情,就是改變SEARCH_PATH您的應用程序用戶:

alter user your_appuser set search_path = 'schema1'; 

如果你有多個模式,您可以添加所有的人:

alter user your_appuser set search_path = 'schema1,schema2,public'; 

不要忘記commit本聲明。更改只會在用戶下次登錄後產生影響。現有的連接不會受到影響。

相關問題