В Hibernate нет конструктора по умолчанию для сущности внутреннего класса

У меня два класса. Один является классом сущности, другой служит классом составного ключа.

Код следующий.

@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

Однако я обнаружил, что если я изменю класс Id на статический . Все будет хорошо.

Мне просто любопытно, как все это может происходить.

32
задан buræquete 7 July 2017 в 02:29
поделиться