Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA2与使用Datanucleus写入重复行的HBase数据存储_Java_Jpa 2.0_Hbase_Datanucleus_Kundera - Fatal编程技术网

Java JPA2与使用Datanucleus写入重复行的HBase数据存储

Java JPA2与使用Datanucleus写入重复行的HBase数据存储,java,jpa-2.0,hbase,datanucleus,kundera,Java,Jpa 2.0,Hbase,Datanucleus,Kundera,我正在创建一个简单的java web应用程序,它通过JPA2(使用Datanucleus)将一行数据写入HBase表,除了写2行重复数据,而不是只写1行 结果 ROW COLUMN+CELL 4028

我正在创建一个简单的java web应用程序,它通过JPA2(使用Datanucleus)将一行数据写入HBase表,除了写2行重复数据,而不是只写1行

结果

ROW                                        COLUMN+CELL                                                                                                              
 402881813acfed78013acfed78e00000          column=ACCOUNT_TABLE:FIRSTNAME, timestamp=1352108207916, value=testname                                                     
 402881813acfed78013acfed78e00000          column=ACCOUNT_TABLE:ID, timestamp=1352108207916, value=402881813acfed78013acfed78e00000                                 
 402881813acfed78013acfed78e00000          column=ACCOUNT_TABLE:LASTNAME, timestamp=1352108207916, value=testname2                                                     
 402881813acfed78013acfed78e00000          column=ACCOUNT_TABLE:LEVEL, timestamp=1352108207916, value=\x00\x00\x00\x03                                              
 402881813acfed78013acfedf7e20001          column=ACCOUNT_TABLE:FIRSTNAME, timestamp=1352108210172, value=testname                                                     
 402881813acfed78013acfedf7e20001          column=ACCOUNT_TABLE:ID, timestamp=1352108210172, value=402881813acfed78013acfedf7e20001                                 
 402881813acfed78013acfedf7e20001          column=ACCOUNT_TABLE:LASTNAME, timestamp=1352108210172, value=testname2                                                     
 402881813acfed78013acfedf7e20001          column=ACCOUNT_TABLE:LEVEL, timestamp=1352108210172, value=\x00\x00\x00\x03                                              
2 row(s) in 0.1270 seconds
pom.xml中的Datanucleus版本

<org.datanucleus-version>3.1.1</org.datanucleus-version>
 <dependencies>
        <!-- JPA 2.0 Spec -->
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-jpa_2.0_spec</artifactId>
            <version>1.1</version>
        </dependency>

        <!-- JDO API -->
        <dependency>
            <groupId>javax.jdo</groupId>
            <artifactId>jdo-api</artifactId>
            <version>3.0</version>
        </dependency>

        <!-- DataNucleus HBase -->
        <dependency>
            <groupId>org.datanucleus</groupId>
            <artifactId>datanucleus-hbase</artifactId>
            <version>${org.datanucleus-version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-core</artifactId>
            <version>1.0.4</version>
            <exclusions>
                <exclusion>
                    <groupId>org.codehaus.jackson</groupId>
                    <artifactId>jackson-mapper-asl</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.codehaus.jackson</groupId>
                    <artifactId>jackson-core-asl</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase</artifactId>
            <version>0.94.0</version>
        </dependency>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.1.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.3</version>
        </dependency>

        <!-- DataNucleus Core -->
        <dependency>
            <groupId>org.datanucleus</groupId>
            <artifactId>datanucleus-core</artifactId>
            <version>${org.datanucleus-version}</version>
            <scope>runtime</scope>
        </dependency>

        <!-- DataNucleus Enhancer -->
        <dependency>
            <groupId>org.datanucleus</groupId>
            <artifactId>datanucleus-enhancer</artifactId>
            <version>${org.datanucleus-version}</version>
        </dependency>

        <!-- DataNucleus JPA api -->
        <dependency>
            <groupId>org.datanucleus</groupId>
            <artifactId>datanucleus-api-jpa</artifactId>
            <version>${org.datanucleus-version}</version>
        </dependency>
           <plugin>
                <groupId>org.datanucleus</groupId>
                <artifactId>maven-datanucleus-plugin</artifactId>
                <version>${org.datanucleus-version}</version>
                <configuration>
                    <api>JPA</api>
                    <log4jConfiguration>${basedir}/log4j.properties</log4jConfiguration>
                    <verbose>true</verbose>
                    <persistenceUnitName>hbase-test</persistenceUnitName>
                </configuration>
                <executions>
                    <execution>
                        <phase>process-classes</phase>
                        <goals>
                            <goal>enhance</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
persistence.xml

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">

    <persistence-unit name="hbase-test" transaction-type="RESOURCE_LOCAL">
        <provider>org.datanucleus.api.jpa.PersistenceProviderImpl</provider>
        <mapping-file>org/test/model/orm.xml</mapping-file>
        <class>org.test.model.Account</class>
        <exclude-unlisted-classes>true</exclude-unlisted-classes>

        <properties>
            <property name="datanucleus.storeManagerType" value="hbase" />
            <property name="datanucleus.ConnectionURL" value="hbase:localhost:60010"/>
            <property name="datanucleus.ConnectionUserName" value=""/>
            <property name="datanucleus.ConnectionPassword" value=""/>
            <property name="datanucleus.autoCreateSchema" value="true"/>
            <property name="datanucleus.autoCreateTables" value="true" />
            <property name="datanucleus.autoCreateColumns" value="true" />
            <property name="datanucleus.validateTables" value="true"/>
            <property name="datanucleus.validateConstraints" value="false"/>
            <property name="datanucleus.Optimistic" value="false"/>
            <property name="datanucleus.Multithreaded" value="true" />
        </properties>
    </persistence-unit>
</persistence>
<?xml version="1.0" encoding="UTF-8" ?>
<!--
  Copyright (C) 2010 Bartosch Warzecha, Matthias Weßendorf

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
    http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
             version="2.0">

    <persistence-unit name="hbase">
        <provider>com.impetus.kundera.KunderaPersistence</provider>
        <class>org.test.model.Account</class>
        <exclude-unlisted-classes>true</exclude-unlisted-classes>
        <properties>
            <property name="kundera.nodes" value="localhost" />
            <property name="kundera.port" value="60010" />
            <property name="kundera.keyspace" value="test" />
            <property name="kundera.dialect" value="hbase" />
            <property name="kundera.client.lookup.class" value="com.impetus.client.hbase.HBaseClientFactory" />
            <property name="kundera.cache.provider.class"
                      value="com.impetus.kundera.cache.ehcache.EhCacheProvider" />
            <property name="kundera.cache.config.resource" value="/ehcache-test.xml" />
            <property name="kundera.ddl.auto.prepare" value="create" />
        </properties>
    </persistence-unit>
</persistence>

更新

@数据核

我在SpringMVC控制器中有调用DAO(添加帐户对象)的代码,我不知道为什么,但这会导致重复的行,Datanucleus工作得很好


虽然我找不到它创建重复行的原因,但我换了它,因为它似乎解决了重复行的问题

我想里面有个虫子


昆德拉版本号

<kundera-version>2.1</kundera-version>
2.1
pom.xml依赖项

        <dependency>
            <groupId>javax.persistence</groupId>
            <artifactId>persistence-api</artifactId>
            <version>2.0</version>
        </dependency>

        <dependency>
            <groupId>com.impetus.core</groupId>
            <artifactId>kundera-core</artifactId>
            <version>${kundera-version}</version>
        </dependency>

        <dependency>
            <groupId>com.impetus.client</groupId>
            <artifactId>kundera-hbase</artifactId>
            <version>${kundera-version}</version>
            <exclusions>
            <exclusion>
                <groupId>org.apache.hbase</groupId>
                <artifactId>hbase</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-core</artifactId>
            </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>commons-collections</groupId>
            <artifactId>commons-collections</artifactId>
            <version>3.2.1</version>
        </dependency>

        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.4</version>
        </dependency>

        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.1.1</version>
        </dependency>

        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.2</version>
        </dependency>

        <dependency>
            <groupId>com.impetus.kundera.rest</groupId>
            <artifactId>kundera-rest</artifactId>
            <version>${kundera-version}</version>
        </dependency>

        <!-- HBase and Hadoop -->
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-core</artifactId>
            <version>1.0.4</version>
            <exclusions>
                <exclusion>
                    <groupId>org.codehaus.jackson</groupId>
                    <artifactId>jackson-mapper-asl</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.codehaus.jackson</groupId>
                    <artifactId>jackson-core-asl</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase</artifactId>
            <version>0.94.0</version>
        </dependency>

javax.persistence
持久性api
2
核心
昆德拉岩芯
${kundera版本}
客户机
昆德拉hbase
${kundera版本}
org.apache.hbase
数据库
org.apache.hadoop
hadoop内核
公地收藏
公地收藏
3.2.1
公地郎
公地郎
2.4
公用记录
公用记录
1.1.1
通用编解码器
通用编解码器
1.2
com.motion.kundera.rest
昆德拉休息酒店
${kundera版本}
org.apache.hadoop
hadoop内核
1.0.4
org.codehaus.jackson
杰克逊地图绘制者
org.codehaus.jackson
jackson core asl
org.apache.hbase
数据库
0.94.0
persistence.xml

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">

    <persistence-unit name="hbase-test" transaction-type="RESOURCE_LOCAL">
        <provider>org.datanucleus.api.jpa.PersistenceProviderImpl</provider>
        <mapping-file>org/test/model/orm.xml</mapping-file>
        <class>org.test.model.Account</class>
        <exclude-unlisted-classes>true</exclude-unlisted-classes>

        <properties>
            <property name="datanucleus.storeManagerType" value="hbase" />
            <property name="datanucleus.ConnectionURL" value="hbase:localhost:60010"/>
            <property name="datanucleus.ConnectionUserName" value=""/>
            <property name="datanucleus.ConnectionPassword" value=""/>
            <property name="datanucleus.autoCreateSchema" value="true"/>
            <property name="datanucleus.autoCreateTables" value="true" />
            <property name="datanucleus.autoCreateColumns" value="true" />
            <property name="datanucleus.validateTables" value="true"/>
            <property name="datanucleus.validateConstraints" value="false"/>
            <property name="datanucleus.Optimistic" value="false"/>
            <property name="datanucleus.Multithreaded" value="true" />
        </properties>
    </persistence-unit>
</persistence>
<?xml version="1.0" encoding="UTF-8" ?>
<!--
  Copyright (C) 2010 Bartosch Warzecha, Matthias Weßendorf

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
    http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
             version="2.0">

    <persistence-unit name="hbase">
        <provider>com.impetus.kundera.KunderaPersistence</provider>
        <class>org.test.model.Account</class>
        <exclude-unlisted-classes>true</exclude-unlisted-classes>
        <properties>
            <property name="kundera.nodes" value="localhost" />
            <property name="kundera.port" value="60010" />
            <property name="kundera.keyspace" value="test" />
            <property name="kundera.dialect" value="hbase" />
            <property name="kundera.client.lookup.class" value="com.impetus.client.hbase.HBaseClientFactory" />
            <property name="kundera.cache.provider.class"
                      value="com.impetus.kundera.cache.ehcache.EhCacheProvider" />
            <property name="kundera.cache.config.resource" value="/ehcache-test.xml" />
            <property name="kundera.ddl.auto.prepare" value="create" />
        </properties>
    </persistence-unit>
</persistence>

com.property.kundera.kundera持久性
org.test.model.Account
真的

当我运行完全相同的案例时,我使用HBase本机API(来自DataNucleus)得到一个PUT,实际上HBase Shell确认了一行。我必须得出结论,你在工作中犯了一个错误test@DataNucleus我的实现是错误的,我纠正了错误,现在工作正常,谢谢
<?xml version="1.0" encoding="UTF-8" ?>
<!--
  Copyright (C) 2010 Bartosch Warzecha, Matthias Weßendorf

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
    http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
             version="2.0">

    <persistence-unit name="hbase">
        <provider>com.impetus.kundera.KunderaPersistence</provider>
        <class>org.test.model.Account</class>
        <exclude-unlisted-classes>true</exclude-unlisted-classes>
        <properties>
            <property name="kundera.nodes" value="localhost" />
            <property name="kundera.port" value="60010" />
            <property name="kundera.keyspace" value="test" />
            <property name="kundera.dialect" value="hbase" />
            <property name="kundera.client.lookup.class" value="com.impetus.client.hbase.HBaseClientFactory" />
            <property name="kundera.cache.provider.class"
                      value="com.impetus.kundera.cache.ehcache.EhCacheProvider" />
            <property name="kundera.cache.config.resource" value="/ehcache-test.xml" />
            <property name="kundera.ddl.auto.prepare" value="create" />
        </properties>
    </persistence-unit>
</persistence>