我希望Hibernate使用另一个构造器而不是空构造器,因为我有一些逻辑应在对象创建时执行,但取决于对象属性。我读过here,@PersistenceConstructor
解决了这个问题。
我创建了这个示例实体:
@Entity
public class TestEntity
{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@JsonIgnore
public final Long id;
public final int width;
public final int height;
@Transient
private final double area;
@PersistenceConstructor
public TestEntity(Long id, int width, int height)
{
this.id = id;
this.width = width;
this.height = height;
this.area = width * height;
}
public double getArea()
{
return this.area;
}
public interface TestEntityRepository extends CrudRepository<TestEntity, Long>
{
}
}
但是,当我尝试从数据库中检索实例时,出现以下异常:
org.hibernate.InstantiationException: No default constructor for entity
我是在做错什么还是@PersistenceConstructor
注释在这种情况下不起作用?
答案 0 :(得分:0)
Spring Data @PersistenceConstructor
不适用于JPA。它仅在不使用基础数据存储的对象映射的模块中起作用。