Spring Data JPA的@PersistenceConstructor注释是否可以与Hibernate结合使用?

时间:2018-08-28 13:51:22

标签: java spring hibernate spring-data-jpa

我希望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注释在这种情况下不起作用?

1 个答案:

答案 0 :(得分:0)

Spring Data @PersistenceConstructor不适用于JPA。它仅在不使用基础数据存储的对象映射的模块中起作用。