0

私は休止状態で戦っています。hibernate.org/ogm/documentation/getting-started/ に従おうとしています。これが私のファイルです-persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" 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">
  <persistence-unit name="ogm-jpa-tutorial" transaction-type="JTA">
    <!-- Use Hibernate OGM provider: configuration will be transparent -->
    <provider>org.hibernate.ogm.jpa.HibernateOgmPersistence</provider>
    <class>com.mycompany.hibernate.MyEntity</class>
    <properties>
      <property name="hibernate.ogm.datastore.provider" value="MONGODB"/>
      <!-- property optional if you plan and use Infinispan, otherwise adjust to your favorite
                NoSQL Datastore provider.
            <property name="hibernate.ogm.datastore.provider"
                      value="org.hibernate.ogm.datastore.infinispan.impl.InfinispanDatastoreProvider"/>
            -->
      <!-- defines which JTA Transaction we plan to use -->
      <property name="hibernate.ogm.datastore.provider" value="org.hibernate.ogm.datastore.mongodb.impl.MongoDBDatastoreProvider"/>
      <property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.JBossStandAloneJtaPlatform"/>
    </properties>
  </persistence-unit>
</persistence>

エンティティ クラス:

@Entity
@Table(name = "USstates")
public class MyEntity implements Serializable{
   @Id 
   String _id;
   String city;
   Integer pop;
  String state;
  public String getId(){return _id;}
  public String getCity(){return city;}
  public Integer getPop(){return pop;}
  public String getState(){return state;}

} 

応用

private static final String JBOSS_TM_CLASS_NAME = "com.mycompany.hibernate.TransactionManager";
    public static void main( String[] args ) throws Exception
    {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory(
    "ogm-jpa-tutorial");

TransactionManager tm = getTransactionManager();
//Persist entities the way you are used to in plain JPA
tm.begin();

EntityManager em = emf.createEntityManager();
MyEntity e = new MyEntity();
e = new MyEntity();
//Retrieve your entities the way you are used to in plain JPA
tm.begin();
em = emf.createEntityManager();
e = em.find(MyEntity.class, "0");
em.flush();
em.close();
tm.commit();

emf.close();

    }

        public static TransactionManager getTransactionManager() {
try {
Class<?> tmClass = App.class.getClassLoader().loadClass( JBOSS_TM_CLASS_NAME );
return (TransactionManager) tmClass.getMethod( "transactionManager" ).invoke( null );
} catch ( ClassNotFoundException e ) {
e.printStackTrace();
} catch ( InvocationTargetException e ) {
e.printStackTrace();
} catch ( NoSuchMethodException e ) {
e.printStackTrace();
} catch ( IllegalAccessException e ) {
e.printStackTrace();
}
return null;
}

http://media.mongodb.org/zips.jsonから取得したコレクション USstates を使用したデータベース テストがあります。

このコードを使用して、ログに関するいくつかの摩耗と、このアプリケーションの実行中にさらに重要な例外を取得しました。

Exception in thread "main" javax.persistence.PersistenceException: [PersistenceUnit: ogm-jpa-tutorial] Unable to build Hibernate SessionFactory

何か案は?

アップデート:

戦った後、存在しないクラスのエラーが発生しました。すでに何百万もの依存関係の組み合わせを試しましたが、まだ何も得られません...エラー:

スレッド「メイン」の例外 java.lang.NoClassDefFoundError: org/hibernate/util/xml/Origin

更新 2.0: 今、私は他の問題を抱えています:

Exception in thread "main" java.lang.NoSuchMethodError: org.hibernate.cfg.Configuration.getIdentifierGeneratorFactory()Lorg/hibernate/id/factory/spi/MutableIdentifierGeneratorFactory;
    at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:1119)
    at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:291)
    at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:373)
    at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:55)
    at org.hibernate.ogm.jpa.HibernateOgmPersistence.createEntityManagerFactory(HibernateOgmPersistence.java:92)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:63)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
    at com.mycompany.hibernate.App.main(App.java:48)
4

1 に答える 1

0

ばかげた質問ですが、persistence.xml から特定の接続プロパティを削除しましたか、それとも削除しませんでしたか (以下の例を参照)。

    <property name="hibernate.ogm.datastore.provider" value="mongodb"/>
    <property name="hibernate.ogm.datastore.database" value="rntsmpl"/>
    <property name="hibernate.ogm.datastore.host" value="127.0.0.1"/>
    <property name="hibernate.ogm.datastore.port" value="59541"/>
    <property name="hibernate.ogm.datastore.username" value="admin"/>
    <property name="hibernate.ogm.datastore.password" value="nnTdE2jPf4FV"/>
    <property name="hibernate.transaction.jta.platform"    value="org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform" />
于 2014-07-10T02:08:17.687 に答える