java - Hibernate:禁用为 C3P0 创建自动测试表

标签 java hibernate c3p0

我可以访问远程 Oracle 数据库,但我只有读取权限。 我想使用 C3P0 作为 Hibernate 的连接池。 问题是 C3P0 尝试创建自动测试表,但由于只读权限,它无法创建它并失败并显示

WARN  [C3P0PooledConnectionPoolManager.java:944] An attempt to create an automatic test table failed. Create SQL: CREATE TABLE "c3p0_test_table" ( a CHAR(1) )
java.sql.SQLSyntaxErrorException: ORA-01031: insufficient privileges

我的 C3P0 参数如下所示:

    <property name="connection.provider_class">org.hibernate.c3p0.internal.C3P0ConnectionProvider</property>
    <property name="hibernate.c3p0.acquire_increment">3</property>
    <property name="hibernate.c3p0.idle_test_period">0</property>
    <property name="hibernate.c3p0.timeout">0</property>
    <property name="hibernate.c3p0.max_size">20</property>
    <property name="hibernate.c3p0.max_statements">0</property>
    <property name="hibernate.c3p0.min_size">3</property>

如何禁用自动测试表的创建?

最佳答案

你有你不知道的c3p0配置,上面没有引用。默认情况下禁用自动测试表创建。在您的配置中的某个位置,您将 automaticTestTable 设置为 true。

c3p0 在池初始化时将其配置转储到 INFO。检查您实际使用的池的配置,并将其与您期望的配置进行比较。然后除了您显示的 hibernate 配置之外,查找潜伏的 c3p0.properties 文件,并删除可能滑入其中的 c3p0.automaticTestTable=true

关于java - Hibernate:禁用为 C3P0 创建自动测试表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28475238/

相关文章:

java - 使用 GoogleDriveApi for android 和 Groovy 时出现奇怪的 ClassCastException 错误

java - Itext 中的 Bouncy CasSTLe 错误

java - Hibernate:遍历数百万行并且不泄漏内存

java - 使用 jetty :run-exploded 启动时,Wicket 应用程序在启动时抛出异常

oracle - c3p0 连接检查有时需要 15 分钟才能失败

java - Gradle Plugin 与 android 发布插件

java - 如何减少 HttpSession 的使用

hibernate - 将hibernate sql结果存储到arraylist

java - Hibernate 在 1 天后无法执行查询

Java 数据库连接池(BoneCP vs DBPool vs c3p0)