2016-04-04 17 views
1

Postgre uzantıları, genel şemada yüklenir. DBCP veri kaynağı uygulamaya özel şeması için aşağıdaki yolu arama yolunu ayarlayın:Postgres ile arama yolu Spring/DBCP veri kaynağı ile çalışmaz

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" primary="true"> 
    <property name="driverClassName" value="org.postgresql.Driver"/> 
    <property name="url" value="jdbc:postgresql://myhost:myport/${db.gos_app.database}?searchpath=mySchema,public;?ApplicationName=${app.name}"/> 
    <property name="connectionProperties" value="currentSchema=mySchema;"/> 
    <property name="username" value="user"/> 
    <property name="password" value="pw"/> 
    <property name="defaultAutoCommit" value="false"/> 
    <property name="maxActive" value="6" /> 
</bean> 

Ama nedense "public.hstore" gibi onları niteleme olmadan bu kamu şemada yüklü uzantıları kullanamaz.

cevap

0

Çözüm bulundu - JDBC sürücüsü URL'de arama yolu özelliğini bilmiyor. currentSchema sezgisel değil. Daha sonra (böylece muhtemelen kamu dahil orada varsayılan bir üzerine yazarak) yerel Postgres searchpath eşleştirilmiş sürücüye verilir yerine :-(Ama bu hiçbir yerde rapor edilmiştir!

Yani çözüm görünüyor böyle:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" primary="true"> 
<property name="driverClassName" value="org.postgresql.Driver"/> 
<property name="url" value="jdbc:postgresql://myhost:myport/${db.gos_app.database}?ApplicationName=${app.name}"/> 
<property name="connectionProperties" value="currentSchema=mySchema,public;"/> 
<property name="username" value="user"/> 
<property name="password" value="pw"/> 
<property name="defaultAutoCommit" value="false"/> 
<property name="maxActive" value="6" /> 

+0

Neden sadece veritabanı kullanıcı için arama yolunu değişmez '' kullanıcı set search_path = ... değiştirmez –

+0

biz birden fazla hizmete ortak kullanıcı var diye mi??. .. – Strinder