2012-01-11 12 views
2

私はhibernate.propertiesを使用して、MySQLへの休止状態の接続を構成しています。しかし、私はプログラムで設定可能なmysqlサーバが必要です。コードでこのランタイム例外を無視することを選択しましたjava.lang.UnsupportedOperationException

hibernate.connection.driver_class=com.mysql.jdbc.Driver 
#hibernate.connection.url=jdbc:mysql://serverA/MyDB 
hibernate.connection.username=root 
hibernate.connection.password=password 
hibernate.connection.pool_size=2 
hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect 

私はプログラムで選択クエリを実行すると、私はこの例外を取得し、この

String jdbcProperty = "jdbc:mysql://"+Globals.DBSERVER+"/MyDB" ; 
Configuration configuration = new Configuration()       
    .setProperty("hibernate.connection.url", jdbcProperty) ; 
sessionFactory = configuration.         
    configure().buildSessionFactory(new ServiceRegistryBuilder(      
    .buildServiceRegistry()); 

を試してみました。

Exception in thread "main" java.lang.UnsupportedOperationException: The application must supply JDBC connections 
at org.hibernate.service.jdbc.connections.internal.UserSuppliedConnectionProviderImpl.getConnection(UserSuppliedConnectionProviderImpl.java:62) 
at org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:276) 
at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:299) 
at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.getConnection(LogicalConnectionImpl.java:169) 
at org.hibernate.engine.jdbc.internal.proxy.ConnectionProxyHandler.extractPhysicalConnection(ConnectionProxyHandler.java:82) 
at org.hibernate.engine.jdbc.internal.proxy.ConnectionProxyHandler.continueInvocation(ConnectionProxyHandler.java:138) 
at org.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81) 
at $Proxy4.prepareStatement(Unknown Source) 
at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$5.doPrepare(StatementPreparerImpl.java:149) 
at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:178) 
at org.hibernate.engine.jdbc.internal.StatementPreparerImpl.prepareQueryStatement(StatementPreparerImpl.java:147) 
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1739) 
at org.hibernate.loader.Loader.doQuery(Loader.java:828) 
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:289) 
at org.hibernate.loader.Loader.doList(Loader.java:2463) 
at org.hibernate.loader.Loader.doList(Loader.java:2449) 
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2279) 
at org.hibernate.loader.Loader.list(Loader.java:2274) 
at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:332) 
at org.hibernate.internal.SessionImpl.listCustomQuery(SessionImpl.java:1588) 
at org.hibernate.internal.AbstractSessionImpl.list(AbstractSessionImpl.java:224) 
at org.hibernate.internal.SQLQueryImpl.list(SQLQueryImpl.java:156) 
+1

が重複する可能性: //stackoverflow.com/questions/5516369/programmatic-hibernate-configuration-after-xml-configuration) – Perception

+0

いいえ、私はcでhibernate prefixを持っています正しくプログラムで – Siddharth

+1

XML構成の解析が行われる前に、プログラム構成を実行しているため、プログラム構成が吹き飛んでいます。これをコード化する正しい方法については、リンク先の重複した質問を参照してください。 – Perception

答えて

0

すべての設定をプログラムで実行すると機能します。あるいは、私はxmlを通してすべての設定を行うことができます。しかし、私はそれらの1つを選択する必要があります。ミックスはうまくいきません。ここを手伝ってくれてありがとう。

編集

私は、混合作業を得ました。私は、サーバー、ユーザー名とpwdをプログラムで取得し、静的にhibernate.propertiesからリセットする必要がありました。

  • ロング回答:thisを参照してください
  • 短い答え:私は

コードで.applySettings(configuration.getProperties())がありませんでした

sessionFactory = configuration 
    .buildSessionFactory(new ServiceRegistryBuilder() 
    .applySettings(configuration.getProperties()) 
    .buildServiceRegistry()); 
[XML設定後のプログラムによるhibernate設定](HTTPの
関連する問題