在Hibernate中,实体的内部类没有默认构造函数。

11 浏览
0 Comments

在Hibernate中,实体的内部类没有默认构造函数。

我有两个类。一个是实体类,另一个作为复合键类。

代码如下:

@Entity
public class Supply {
    @Embeddable
    static class Id implements Serializable {
        @Column(name = "supplier_id")
        private long supplierId;
        @Column(name = "merchandise_id")
        private long merchandiseId;
        public Id() {
        }
        public Id(long sId, long mId) {
            this.supplierId = sId;
            this.merchandiseId = mId;
        }
    }
    @EmbeddedId
    private Id id = new Id();
}

如果我尝试使用

from Supply where merchandise_id=%d and supplier_id=%d

Hibernate会抛出一个异常,即:

com.entity.Supply$Id没有默认构造函数;嵌套异常为org.hibernate.InstantiationException: com.entity.Supply$Id没有默认构造函数

然而,我发现如果我将类Id改为静态,一切都会正常。

我只是对这些事情是如何发生感到好奇。

0