Я хочу, чтобы Hibernate использовал другой конструктор, а не пустой конструктор, поскольку у меня есть некоторая логика, которая должна выполняться при создании объекта, но зависит от свойств объекта. Я прочитал здесь , что @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
не работает в этом контексте?