クラスが 2 つあります。1 つはエンティティ クラスで、もう 1 つは複合キー クラスとして機能します。
コードは以下のとおりです。
@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
しかし、私が変化すればクラス 識別子に静的。 何もかも良くなるだろう。
これらすべてのことがどのように起こるのか、ただ興味があります。
ベストアンサー1
クラスが でない場合static
、インスタンス化するには外部クラスのインスタンスが必要です。そのため、デフォルトのコンストラクターはありません。次のような構文を使用する必要があります。
new Supply().new Id();
Id
クラスが の場合はstatic
、次のように呼び出すだけです。
new Id();