当前位置: 首页 > 面试题库 >

UnsupportedOperationException:应用程序必须提供JDBC连接

翟展
2023-03-14
问题内容

如果我没有以编程方式设置任何内容,而只是调用Configuration configuration = new Configuration().configure();并使用hibernate.properties(如下所示),那么一切都将很好。尝试以编程方式提供用户名,密码和连接URL时,我会收到奇怪的异常提示,提示是hbm文件。我想念什么?

hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.connection.url=jdbc:mysql://myEC2/mCruiseOnServerDB?autoReconnect=true&failOverReadOnly=false&maxReconnects=10
hsqldb.write_delay_millis=0
shutdown=true
hibernate.connection.username=root
hibernate.connection.password=mypwd
hibernate.connection.pool_size=2
hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect
hibernate.c3p0.idle_test_period=300
hibernate.c3p0.timeout=120

按照@Kshitij的建议。进行混合模式。

*现在 *的hibernate.properties

hibernate.connection.driver_class=com.mysql.jdbc.Driver
hsqldb.write_delay_millis=0
shutdown=true
hibernate.connection.pool_size=2
hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect

编码

String connection = "jdbc:mysql://"
            + Globals.DBSERVER
            + "/mCruiseOnServerDB?autoReconnect=true&failOverReadOnly=false&maxReconnects=10";
        Configuration configuration = new Configuration()   
            .setProperty("hibernate.connection.url", connection)                                
            .setProperty("hibernate.connection.username", Globals.DB_USER_NAME)     
            .setProperty("hibernate.connection.password", Globals.DB_PASSWORD);
        configuration.configure();

        sessionFactory = configuration
                .buildSessionFactory(new ServiceRegistryBuilder()
            .buildServiceRegistry());

例外

我现在得到这个异常,mapping resource我的hbm文件中的每个条目都有一个异常。

11 May 2013 08:46:31,969 1300 [main] FATAL ReadOnlyOperations  - Have chosen to ignore this runtime exception java.lang.UnsupportedOperationException: The application must supply JDBC connections, may be fatal, examine this carefully
11 May 2013 08:46:31,969 1300 [main] FATAL ReadOnlyOperations  - java.lang.UnsupportedOperationException: The application must supply JDBC connections

摘要

如果我全部使用hibernate.properties并且没有代码(代码中没有.setProperty),那么一切都会很好。如果使用部分hibernate.properties代码(服务器,用户名,密码),则每个映射属性的hbm都会出错。

我需要有人帮助我弄清楚我所缺少的。它应该是真正的基础。


问题答案:

哇,刚刚解决了这个问题。

sessionFactory = configuration.buildSessionFactory(new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry());

我错过了

.applySettings(configuration.getProperties())

学问

  1. configure()应该在setProperty 之后 被调用
  2. 使用,hibernate.connection.url不是( connection.url如果使用)hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect
  3. 将hibernate日志的log4j属性设置为ALL,以便可以看到更多详细问题
  4. 为了摆脱的WARN Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!,你需要更换http://www.hibernate.org/dtd/cfg.xml文件 和所有的 HBM 文件了。不要忘记 hbm 文件,它们也使用相同的DTD。

最后,参考此内容以解决此问题。最后的建议Bill Gorder是极好的。

private static SessionFactory configureSessionFactory()    
        throws HibernateException {    
    Configuration configuration = new Configuration();    
    configuration.configure();    
    ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()    
            .applySettings(configuration.getProperties())    
            .buildServiceRegistry();    
    return configuration.buildSessionFactory(serviceRegistry);    
}


 类似资料:
  • 我编写了一些代码来测试Hibernate的配置,但是我遇到了这样的错误消息: main函数中的代码如下所示: 根据错误消息,错误发生在 我是Hibernate的一个新用户,我已经检查了我的配置文件很多次了。有人能帮我找出问题所在吗?谢了!

  • 问题内容: 我写了一些代码来测试我的Hibernate配置,但是遇到了这样的错误消息: 我的文件结构如下: 这不是一个Web应用程序,它只是一个普通的Java项目。hibernate.cfg.xml如下所示: 主要功能中的代码如下: 根据错误消息,错误发生在 我是Hibernate的新用户,并且已经多次检查了我的配置文件。有谁可以帮助您找出问题所在?谢谢! 编辑:Hibernate版本是4.3.5

  • 如果我没有以编程方式设置任何东西,只是调用并使用hibernate.properties(如下所示),一切都很好。一旦我尝试以编程方式提供用户名、密码和连接url,我就会得到一个奇怪的异常,提示hbm文件。我错过了什么? 现在hibernate.properties是 代码 例外情况 我现在得到了这个异常,一个用于我的hbm文件中的每个条目。 如果我使用所有而没有代码(代码中没有. setProp

  • 我正在尝试为带有嵌入式postgressql后端(基于磁盘)的Spring启动微服务生成liquibase更改日志 总是犯错误 java.lang.不支持的操作异常:应用程序必须在org.hibernate.engine.jdbc.connections.internal.提供JDBC连接UserSuppliedConnectionProviderImpl.getConnection(UserSu

  • 问题内容: 据报道,这段代码在这里和这里都有效,但是我似乎无法使其正常工作。 IBOutlet已连接到情节提要中的对象。命名了prototypeCell,因此我可以将其使用,并将其自定义类属性设置为。 First Error(我可以解决,但上面的链接都不需要它,这使我觉得我做错了。对吗?): 第二个错误(有趣的错误): 单元类别代码: 初始化代码: 问题答案: 第一个初始化程序的正确签名是: 请注

  • 我试图从Websphere Application Server连接到外部JMS提供者。我们可以不使用Websphere MQ从Websphere Application Server连接到远程JMS提供者吗?