gpt4 book ai didi

java - Hibernate中内部类的实体没有默认构造函数

转载 作者:IT老高 更新时间:2023-10-28 21:00:39 32 4
gpt4 key购买 nike

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

代码如下。

@Entity
public class Supply {

@Embeddable
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 会抛出异常,即:

No default constructor for entity: com.entity.Supply$Id; nested exception is org.hibernate.InstantiationException: No default constructor for entity: com.entity.Supply$Id

但是,我发现如果我将 class Id 更改为 static。一切都会好起来的。

我只是好奇这些事情是如何发生的。

最佳答案

如果类不是static,它需要一个外部类的实例才能被实例化——所以不会有默认构造函数。您必须使用类似于以下的语法:

new Supply().new Id();

如果Id类是static,你可以直接调用:

new Id();

关于java - Hibernate中内部类的实体没有默认构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6805143/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com