iha*_*pyk 4 java xml hibernate hibernate-ogm
我收到以下错误
线程"main"中的异常javax.persistence.PersistenceException:[PersistenceUnit:person]无法在org.hibernate.jpa的org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.persistenceException(EntityManagerFactoryBuilderImpl.java:1249)中构建Hibernate SessionFactory.在org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl $ 4的org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl $ 4.perform(EntityManagerFactoryBuilderImpl.java:860)中的boot.internal.EntityManagerFactoryBuilderImpl.access $ 600(EntityManagerFactoryBuilderImpl.java:120) .perform(EntityManagerFactoryBuilderImpl.java:850)位于org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java)的org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:425) :849)org.hibernate.ogm.jpa.Hibe上的org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:75)rnateOgmPersistence.createEntityManagerFactory(HibernateOgmPersistence.java:63)位于javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55)的javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)at 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.内部.DefaultIdentifierGeneratorFactory.createIdentifierGenerator(DefaultIdentifierGeneratorFactory.java:123)位于org.hibernate.internal.SessionFactoryImpl的org.hibernate.mapping.SimpleValue.createIdentifierGenerator(SimpleValue.java:225).(SessionFactoryImpl .java:323)org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1859)org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl $ 4.perform(EntityManagerFactoryBuilderImpl.java:857)... 9 m ore造成:org.hibernate.HibernateException:org.hibernate.id.factory.internal中org.hibernate.id.UUIDGenerator.configure(UUIDGenerator.java:111)上UUID转换的意外返回类型[java.lang.Long] .DefaultIdentifierGeneratorFactory.createIdentifierGenerator(DefaultIdentifierGeneratorFactory.java:117)... 13更多
Utilty.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();
}
}
Run Code Online (Sandbox Code Playgroud)
持久的阶级
@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;
}
}
Run Code Online (Sandbox Code Playgroud)
主要班级
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();
}
}
Run Code Online (Sandbox Code Playgroud)
persistance.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>
Run Code Online (Sandbox Code Playgroud)
根异常说明了一切:
Caused by: org.hibernate.HibernateException: Unanticipated return type [java.lang.Long] for UUID
Run Code Online (Sandbox Code Playgroud)
您正在一个它不支持的类型上使用UUID id生成器.您应该使用String
而不是Long
在这种情况下.
归档时间: |
|
查看次数: |
24685 次 |
最近记录: |