DataNucleus、HBase、JDO:“;必须指定名为javax.jdo.PersistenceManagerFactoryClass的属性;

DataNucleus、HBase、JDO:“;必须指定名为javax.jdo.PersistenceManagerFactoryClass的属性;,java,hbase,jdo,datanucleus,Java,Hbase,Jdo,Datanucleus,我在尝试执行以下操作时遇到异常(“必须指定名为javax.jdo.PersistenceManagerFactoryClass的属性”) 我的datanucleus.properties文件(下面)没有指定这样的属性,但是教程和 查找3.1示例后编辑: src/main/resources/datanucleus.properties javax.jdo.option.ConnectionURL=hbase:hx1:60010 javax.jdo.option.Mapping=hbase da

我在尝试执行以下操作时遇到异常(“必须指定名为javax.jdo.PersistenceManagerFactoryClass的属性”)

我的datanucleus.properties文件(下面)没有指定这样的属性,但是教程和

查找3.1示例后编辑:

src/main/resources/datanucleus.properties

javax.jdo.option.ConnectionURL=hbase:hx1:60010
javax.jdo.option.Mapping=hbase

datanucleus.metadata.validate=false
datanucleus.autoCreateSchema=true
datanucleus.validateTables=false
datanucleus.validateConstraints=false
src/main/java/hbase site.xml

<?xml version="1.0"?>

<configuration> 
  <property>
    <name>hbase.zookeeper.quorum</name>
    <value>hx1:2181</value>
    <description>The host and port that the HBase master runs at.
    </description>
  </property>
</configuration>
<?xml version="1.0"?>
<!DOCTYPE orm PUBLIC 
    "-//Sun Microsystems, Inc.//DTD Java Data Objects Metadata 2.0//EN" 
    "http://java.sun.com/dtd/orm_2_0.dtd">
<orm>
    <package name="com.business.model">
        <class name="Recommendation" table="Recommendations">
            <field name="id" column="ID"/>
            <field name="documents" column="DOCUMENTS"/>
        </class>

        <class name="Document">
            <field name="id" column="ID"/>
            <field name="title" column="TITLE"/>
        </class>
    </package>
</orm>

hbase.zookeeper.quorum
hx1:2181
HBase主机运行的主机和端口。
src/main/com.business.model/package hbase.xml

<?xml version="1.0"?>

<configuration> 
  <property>
    <name>hbase.zookeeper.quorum</name>
    <value>hx1:2181</value>
    <description>The host and port that the HBase master runs at.
    </description>
  </property>
</configuration>
<?xml version="1.0"?>
<!DOCTYPE orm PUBLIC 
    "-//Sun Microsystems, Inc.//DTD Java Data Objects Metadata 2.0//EN" 
    "http://java.sun.com/dtd/orm_2_0.dtd">
<orm>
    <package name="com.business.model">
        <class name="Recommendation" table="Recommendations">
            <field name="id" column="ID"/>
            <field name="documents" column="DOCUMENTS"/>
        </class>

        <class name="Document">
            <field name="id" column="ID"/>
            <field name="title" column="TITLE"/>
        </class>
    </package>
</orm>


你知道我错过了什么吗?在与JPA合作几年后,我是JDO新手。

我从未尝试过HBase教程,但您必须定义javax.JDO.PersistenceManagerFactoryClass属性。Mine在persistence.xml文件(src/main/resources)中定义。属性定义:

<property name="javax.jdo.PersistenceManagerFactoryClass"
            value="org.datanucleus.api.jdo.JDOPersistenceManagerFactory" />

也可以在创建PMF时定义此属性


更多详细信息请参见:

我从未尝试过HBase教程,但必须定义javax.jdo.PersistenceManagerFactoryClass属性。Mine在persistence.xml文件(src/main/resources)中定义。属性定义:

<property name="javax.jdo.PersistenceManagerFactoryClass"
            value="org.datanucleus.api.jdo.JDOPersistenceManagerFactory" />

也可以在创建PMF时定义此属性


更多详细信息见:

您参考的是不推荐使用的示例的v3.0和本教程的v3.1。我会解决这个问题。我复制了3.1示例,但仍然得到相同的错误。有什么想法吗?当我下载3.1示例时,取消对“pom.xml”和“datanucleus.properties”中的HBase位的注释,并按照教程运行,效果很好(由于其依赖性问题,您可能需要将hadoop core、HBase和zookeeper的版本更新到更新的版本)。当类路径中有多个jdo实现时(并且通过教程自述文件运行只会引入DataNucleus),只需要“javax.jdo.PersistenceManagerFactoryClass”,否则,它会从datanucleus-api-jdo.jarFYI中的服务文件中识别实现。如果
datanucleus.properties
文件的路径中存在空格,则架构生成将失败。该示例对我不起作用:java.lang.NoSuchMethodError:org.apache.hadoop.hbase.hcolumDescriptor.setCompressionType。我不明白为什么,根据POM,HBase版本是
0.90.4
,并且我看不到在类路径上引入任何其他版本?您参考的是不推荐使用的示例的v3.0和教程的v3.1。我会解决这个问题。我复制了3.1示例,但仍然得到相同的错误。有什么想法吗?当我下载3.1示例时,取消对“pom.xml”和“datanucleus.properties”中的HBase位的注释,并按照教程运行,效果很好(由于其依赖性问题,您可能需要将hadoop core、HBase和zookeeper的版本更新到更新的版本)。当类路径中有多个jdo实现时(并且通过教程自述文件运行只会引入DataNucleus),只需要“javax.jdo.PersistenceManagerFactoryClass”,否则,它会从datanucleus-api-jdo.jarFYI中的服务文件中识别实现。如果
datanucleus.properties
文件的路径中存在空格,则架构生成将失败。该示例对我不起作用:java.lang.NoSuchMethodError:org.apache.hadoop.hbase.hcolumDescriptor.setCompressionType。我不明白为什么,根据POM,HBase版本是
0.90.4
,我看不到在类路径上有任何其他版本?