DataNucleus,HBase,JDO:“必须指定一个名为javax.jdo.PersistenceManagerFactoryClass的属性”

Eng*_*_DJ 1 java hbase jdo datanucleus

尝试遵循DataNucleus HBase教程时,出现异常(“必须指定一个名为javax.jdo.PersistenceManagerFactoryClass的属性”)。

我的datanucleus.properties文件(下面)没有指定这样的属性,但是本教程也没有指定,并且DataNucleus HBase示例也没有指定。

找到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
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

src / main / com.business.model / package-hbase.xml

<?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>
Run Code Online (Sandbox Code Playgroud)

有什么想法我想念的吗?在JPA工作了几年之后,我才刚接触JDO。

Krz*_*ski 5

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

<property name="javax.jdo.PersistenceManagerFactoryClass"
            value="org.datanucleus.api.jdo.JDOPersistenceManagerFactory" />
Run Code Online (Sandbox Code Playgroud)

您还可以在创建PMF时定义此属性。

有关更多详细信息,请访问:http : //db.apache.org/jdo/pmf.html