Java 初始化期间Hibernate PropertyNotFoundException-找不到MyEntity的setter#new
我目前正在迁移一个Hibernate实现,以使用Java 初始化期间Hibernate PropertyNotFoundException-找不到MyEntity的setter#new,java,hibernate,jpa,Java,Hibernate,Jpa,我目前正在迁移一个Hibernate实现,以使用EntityManager而不是Session。在初始化过程中,转储以下堆栈跟踪: Exception in thread "main" javax.persistence.PersistenceException: [PersistenceUnit: myunit] Unable to build Hibernate SessionFactory at org.hibernate.jpa.boot.internal.EntityManag
EntityManager
而不是Session
。在初始化过程中,转储以下堆栈跟踪:
Exception in thread "main" javax.persistence.PersistenceException: [PersistenceUnit: myunit] Unable to build Hibernate SessionFactory
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.persistenceException(EntityManagerFactoryBuilderImpl.java:967)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:892)
at com.example.DbConnector.initialize(DbConnector.java:93)
at com.example.Start.main(Start.java:12)
Caused by: org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister
at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:123)
at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:77)
at org.hibernate.metamodel.internal.MetamodelImpl.initialize(MetamodelImpl.java:128)
... 6 more
Caused by: org.hibernate.HibernateException: Unable to instantiate default tuplizer [org.hibernate.tuple.entity.PojoEntityTuplizer]
at org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:91)
at org.hibernate.tuple.entity.EntityTuplizerFactory.constructDefaultTuplizer(EntityTuplizerFactory.java:116)
at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:385)
... 15 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
... 19 more
Caused by: org.hibernate.PropertyNotFoundException: Could not locate setter method for property [com.example.MyEntity#new]
at org.hibernate.internal.util.ReflectHelper.findSetterMethod(ReflectHelper.java:552)
at org.hibernate.property.access.internal.PropertyAccessBasicImpl.<init>(PropertyAccessBasicImpl.java:44)
at org.hibernate.property.access.internal.PropertyAccessStrategyBasicImpl.buildPropertyAccess(PropertyAccessStrategyBasicImpl.java:27)
... 26 more
触发此异常的是什么
更新:以下是MyEntity的来源:
@Entity
@Table(name = "myEntity")
public class MyEntity extends BaseEntity {
private String name;
public MyEntity() {
}
public MyEntity(final String name) {
this.name = name;
}
@Basic
@NaturalId
@Column(name = "name")
public String getName() {
return name;
}
public void setName(final String name) {
this.name = name;
}
}
@MappedSuperclass
public abstract class BaseEntity {
protected UUID id;
protected LocalDateTime created;
protected LocalDateTime updated;
@PrePersist
public void prePersist() {
preUpdate();
created = updated;
}
@PreUpdate
public void preUpdate() {
updated = LocalDateTime.now();
}
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "uuid-generator")
@GenericGenerator(name = "uuid-generator", strategy = "uuid2")
@Column(name = "id")
public UUID getId() {
return id;
}
public void setId(final UUID id) {
this.id = id;
}
@Basic
@Column(name = "created")
public LocalDateTime getCreated() {
return created;
}
public void setCreated(final LocalDateTime created) {
this.created = created;
}
@Version
@Column(name = "updated")
public LocalDateTime getUpdated() {
return updated;
}
public void setUpdated(final LocalDateTime updated) {
this.updated = updated;
}
}
和BaseEntity
:
@Entity
@Table(name = "myEntity")
public class MyEntity extends BaseEntity {
private String name;
public MyEntity() {
}
public MyEntity(final String name) {
this.name = name;
}
@Basic
@NaturalId
@Column(name = "name")
public String getName() {
return name;
}
public void setName(final String name) {
this.name = name;
}
}
@MappedSuperclass
public abstract class BaseEntity {
protected UUID id;
protected LocalDateTime created;
protected LocalDateTime updated;
@PrePersist
public void prePersist() {
preUpdate();
created = updated;
}
@PreUpdate
public void preUpdate() {
updated = LocalDateTime.now();
}
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "uuid-generator")
@GenericGenerator(name = "uuid-generator", strategy = "uuid2")
@Column(name = "id")
public UUID getId() {
return id;
}
public void setId(final UUID id) {
this.id = id;
}
@Basic
@Column(name = "created")
public LocalDateTime getCreated() {
return created;
}
public void setCreated(final LocalDateTime created) {
this.created = created;
}
@Version
@Column(name = "updated")
public LocalDateTime getUpdated() {
return updated;
}
public void setUpdated(final LocalDateTime updated) {
this.updated = updated;
}
}
显示实体
MyEntity
的java代码。请参阅编辑,不确定我最初为什么没有附加它!为什么在MyEntity
类中有SectorEntity
构造函数?因为我在复制到SO时没有更改它们,修复了!