Hibernate4 Proxool 0.9.1

时间:2013-02-10 15:04:44

标签: hibernate proxool

我使用的是Proxool 0.9.1。

自Hibernate 4.x以来,ProxoolConnectionProvider已被移至org.hibernate.service.jdbc.connections.internal包(在jar:$ {hibernate-release-4.x} / lib / optional / proxool / hibernate-proxool -4.x.jar)。

当我从3.x升级到4.x(配置没有改变)时,它总是告诉我

Exception: the url can not be null

...所以我跟踪了Hibernate源代码,发现从未调用过ProxoolConnectionProvider中的方法public void configure(Properties props),因此ProxoolConnectionProvider中的所有属性都为空。

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

这是由于Hibernate 4.x(HHH-7289

中的错误而发生的

您可以通过扩展org.hibernate.service.jdbc.connections.internal.ProxoolConnectionProvider并实现org.hibernate.service.spi.Configurable接口来解决此问题。例如:

public class ConfigurableProxoolConnectionProvider extends ProxoolConnectionProvider implements Configurable
    @Override
    public void configure( final Map configurationValues ) {
        final Map<?,?> configuration = (Map<?,?>) configurationValues;
        final Properties properties = new Properties( );
        for ( final Map.Entry entry : configuration.entrySet() ) {
            properties.setProperty(
                String.valueOf( entry.getKey() ),
                String.valueOf( entry.getValue() ) );
        }       
        super.configure( properties );
    }
}

然后在'hibernate.connection.provider_class'下的hibernate属性中引用扩展类(例如xxx.yyy.ConfigurableProxoolConnectionProvider)。