4

以下のエラーが表示されます

スレッド「メイン」の例外 javax.persistence.PersistenceException: [PersistenceUnit: person] org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.persistenceException(EntityManagerFactoryBuilderImpl.java:1249) で Hibernate SessionFactory を org.hibernate.jpa でビルドできません。 boot.internal.EntityManagerFactoryBuilderImpl.access$600(EntityManagerFactoryBuilderImpl.java:120) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:860) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4 .perform(EntityManagerFactoryBuilderImpl.java:850) at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:425) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:849) at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:75) at org.hibernate.ogm.jpa.HibernateOgmPersistence.createEntityManagerFactory(HibernateOgmPersistence.java:63) at javax.persistence.Persistence .createEntityManagerFactory(Persistence.java:55) の javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39) com.ihappyk.utility.Utility.setUpEntityManagerFactory(Utility.java:11) の com.ihappyk.work.PersonWorker. main(PersonWorker.java:14) 原因: org.hibernate.MappingException: ID ジェネレーター [entity-name=com.ihappyk.model.Person] を org.hibernate.id.factory.internal.DefaultIdentifierGeneratorFactory.createIdentifierGenerator( DefaultIdentifierGeneratorFactory.java:123) org.hibernate.mapping.SimpleValue.createIdentifierGenerator(SimpleValue.java:225) で org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:323) で org.hibernate.cfg.Configuration.buildSessionFactory(Configuration. java:1859) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:857) ... 9 より多くの原因: org.hibernate.HibernateException: 予期しない戻り値の型 [java.lang.Long] org.hibernate.id.factory.internal.DefaultIdentifierGeneratorGeneratorFactory.createIdentifierGenerator(DefaultIdentifierGeneratorFactory.java:117) の org.hibernate.id.UUIDGenerator.configure(UUIDGenerator.java:111) での UUID 変換用 ... 13 詳細225) org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:323) で org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1859) で org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform (EntityManagerFactoryBuilderImpl.java:857) ... 9 以上 原因: org.hibernate.HibernateException: org.hibernate.id.UUIDGenerator.configure(UUIDGenerator.java:111) での UUID 変換の予期しない戻り値の型 [java.lang.Long] ) at org.hibernate.id.factory.internal.DefaultIdentifierGeneratorFactory.createIdentifierGenerator(DefaultIdentifierGeneratorFactory.java:117) ... 13 詳細225) org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:323) で org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1859) で org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform (EntityManagerFactoryBuilderImpl.java:857) ... 9 以上 原因: org.hibernate.HibernateException: org.hibernate.id.UUIDGenerator.configure(UUIDGenerator.java:111) での UUID 変換の予期しない戻り値の型 [java.lang.Long] ) at org.hibernate.id.factory.internal.DefaultIdentifierGeneratorFactory.createIdentifierGenerator(DefaultIdentifierGeneratorFactory.java:117) ... 13 詳細internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:857) ... 9 詳細(UUIDGenerator.java:111) at org.hibernate.id.factory.internal.DefaultIdentifierGeneratorFactory.createIdentifierGenerator(DefaultIdentifierGeneratorFactory.java:117) ... 13 詳細internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:857) ... 9 詳細(UUIDGenerator.java:111) at org.hibernate.id.factory.internal.DefaultIdentifierGeneratorFactory.createIdentifierGenerator(DefaultIdentifierGeneratorFactory.java:117) ... 13 詳細createIdentifierGenerator(DefaultIdentifierGeneratorFactory.java:117) ... 13 詳細createIdentifierGenerator(DefaultIdentifierGeneratorFactory.java:117) ... 13 詳細

ユーティリティ.java

public class Utility {
    private static EntityManagerFactory entityManagerFactory;

    //@BeforeClass
    public static EntityManagerFactory setUpEntityManagerFactory() {
        entityManagerFactory = Persistence.createEntityManagerFactory( "person" );
        return entityManagerFactory;
    }

    //@AfterClass
    public static void closeEntityManagerFactory() {
        entityManagerFactory.close();
    }
}

永続クラス

@Entity
public class Person {

        @Id
        @GeneratedValue(generator = "uuid")
        @GenericGenerator(name = "uuid", strategy = "uuid2")
        private long id;

        private String firstName;
        private String lastName;

        public long getId() {
            return id;
        }
        public void setId(long id) {
            this.id = id;
        }
        public String getFirstName() {
            return firstName;
        }
        public void setFirstName(String firstName) {
            this.firstName = firstName;
        }
        public String getLastName() {
            return lastName;
        }
        public void setLastName(String lastName) {
            this.lastName = lastName;
        }

        public Person(){

        }

        public Person(String firstName, String lastName) {
            this.firstName = firstName;
            this.lastName = lastName;
        }    
}

メインクラス

public class PersonWorker {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        EntityManagerFactory emf = Utility.setUpEntityManagerFactory();

        EntityManager em = emf.createEntityManager();

        em.getTransaction().begin();

            // create a Person
        Person bob = new Person( "Bob", "McRobb" );

        em.persist( bob );
        em.getTransaction().commit();
        em.close();
        emf.close();

    }

}

持続性.xml

<?xml version="1.0"?>
<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="person" transaction-type="JTA">
        <provider>org.hibernate.ogm.jpa.HibernateOgmPersistence</provider>
       <class>com.ihappyk.model.Person</class>
        <properties>
            <property name="hibernate.ogm.datastore.provider" value="mongodb" />
            <property name="hibernate.ogm.datastore.database" value="hibernateOGM" />
            <property name="hibernate.ogm.datastore.host" value="127.0.0.1" />
            <property name="hibernate.ogm.datastore.port" value="27017" />
            <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>
4

4 に答える 4

8

ルート例外はそれをすべて言います:

Caused by: org.hibernate.HibernateException: Unanticipated return type [java.lang.Long] for UUID

サポートされていないタイプで UUID ID ジェネレーターを使用しています。Stringこの場合の代わりに使用する必要がありますLong

于 2015-07-17T07:21:23.560 に答える
1
  1. この非推奨の org.hibernate.ejb.HibernatePersistence を使用する場合は、以下のように新しいプロバイダーを設定します

<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>

  1. あなたの価値が

<property name="hibernate.hbm2ddl.auto" value="update" />

「作成ドロップ」を設定

<property name="hibernate.hbm2ddl.auto" value="create-drop" />

  1. XML パス: resources/META-INF/persistence.xml
  2. mysql の場合

<?xml version="1.0" encoding="UTF-8"?>

<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">

        <persistence-unit name="persistenceUnit" transaction-type="RESOURCE_LOCAL">
            <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
            <properties>
                  <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
                  <property name="hibernate.hbm2ddl.auto" value="create-drop" />
                  <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
                  <property name="hibernate.show_sql" value="true"/>
                  <property name="hibernate.connection.username" value="yourname"/>
                  <property name="hibernate.connection.password" value="yourpassword"/>
                  <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/yourschema"/>
                  <property name="hibernate.max_fetch_depth" value="3"/>
            </properties>
        </persistence-unit>

    </persistence>
于 2015-12-14T10:07:16.077 に答える
-1

問題がまだ存在するかどうかはわかりませんが、persistence.xml ファイルを src/main/META-INF フォルダーに配置する必要があると思いました。src/META-INF に入れているようです。たぶんそれが問題ですか?もちろん、リンクしたいエンティティも src/main フォルダーに属します:)

于 2015-07-14T12:00:05.987 に答える