跳到主要内容

Hibernate 实体类必须要有无参构造函数吗?

参考答案:

是的,Hibernate 实体类(也称为 POJO,Plain Old Java Object)通常需要一个无参构造函数。这是因为 Hibernate 在实例化实体对象和执行各种操作时,需要能够通过反射来创建实体对象。无参构造函数是 Hibernate 在这种情况下能够使用的唯一方式。

虽然你的实体类可能有其他的构造函数(带有参数的构造函数),但为了确保 Hibernate 能够正确地创建和管理实体对象,你仍然需要提供一个无参构造函数。

这是一个简单的例子来说明这个概念:

import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class Person {

    @Id
    private Long id;

    private String name;

    // 无参构造函数
    public Person() {
    }

    // 带参数的构造函数
    public Person(Long id, String name) {
        this.id = id;
        this.name = name;
    }

    // getters and setters
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

在这个例子中,Person 类是一个 Hibernate 实体类,并且它有一个无参构造函数。虽然还有一个带参数的构造函数,但是 Hibernate 在需要创建 Person 对象时,会使用无参构造函数。