Tengo dos clases. Una es la clase de entidad, la otra sirve como una clase de clave compuesta.Ningún constructor predeterminado para entidad para clase interna en Hibernate
El código es el siguiente.
@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();
}
Si utilizo tratar de encontrar
from Supply where merchandise_id=%d and supplier_id=%d
Hibernate lanzará una excepción, a saber:
No default constructor for entity: com.entity.Supply$Id; nested exception is org.hibernate.InstantiationException: No default constructor for entity: com.entity.Supply$Id
Sin embargo, he encontrado que si cambio claseId a estática. Todo estará bien.
Tengo curiosidad acerca de cómo pueden suceder todas estas cosas.
Ayudaría mucho si incluye el ID de advertencia de hibernación "HHH000182" en esta publicación. Lo estático me solucionó las cosas, ¡pero encontrar esta respuesta fue difícil! – Amalgovinus