我有一个用于连接到一个应用程序MySQL
,我有Hibernate
配置它是这样的:
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://somehost:3306/some_db</property>
...
现在,如果我想连接到Hive/SparkSQL
相反,你会为这些属性中的等效值是什么?
我有一些想法driver_class
和url
(假设我们使用端口10000
),但什么都要的dialect
是什么?
<property name="hibernate.connection.driver_class">org.apache.hive.jdbc.HiveDriver</property>
<property name="hibernate.connection.url">jdbc:hive2://someHost:10000</property>
更新
我尝试了许多不同的值,但他们没有工作。 (我还没有发现什么metastore了Apache蜂巢安装使用,所以在这里我只是做尝试和错误)
org.hibernate.dialect.MySQLDialect
org.hibernate.dialect.MySQLInnoDBDialect
org.hibernate.dialect.DerbyDialect
org.hibernate.dialect.DerbyTenFiveDialect
org.hibernate.dialect.Oracle10gDialect
org.hibernate.dialect.H2Dialect
org.hibernate.dialect.Dialect
我注意到,在所有的情况下,有从休眠提到的警告:
WARN JdbcServicesImpl,main:160 - \
HHH000341: Could not obtain connection metadata : \
Method not supported
然后代码将运行到一个NullPointerException
在org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure()
(207线在4.2.0.Final)。
我下载的Hibernate的源代码和跟踪的逻辑。 唯一的例外是造成的,因为前面几行的变量dialect
(类型的Dialect
)被确定为null
由于试图执行138线时捕获的异常:
metaReportsDDLCausesTxnCommit = meta.dataDefinitionCausesTransactionCommit();
唯一的例外是
java.sql.SQLException: Method not supported
(导致上述警告消息)
这是否意味着我不能使用Hibernate
与Apache蜂巢? 如果是这样的话,那就这样吧。 (我猜我会换出Hibernate
实现这部分),但我很好奇地想知道这个权威的答案。
在互联网上我找不到有力的证据,人们一直在使用Hibernate
成功与Apache蜂巢。