java.lang.IllegalArgumentException: ожидание сопоставления IdClass при использовании составного идентификатора - PullRequest
0 голосов
/ 23 ноября 2018

Я пытаюсь отобразить таблицу, в которой есть составной-идентификатор , используя Hibernate.У меня есть файл сопоставления, класс сущности, который отображает эту таблицу, и IdClass, который необходим для сериализации составного идентификатора.Но я получаю IllegalArgumentException: expecting IdClass mapping ошибку.Вот файл сопоставления:

<hibernate-mapping>
    <class name="database.PermissionsEntity" table="Permissions" schema="interapp">
        <composite-id mapped="true" class="database.PermissionsEntityPK">
            <key-property name="id">
                <column name="id" sql-type="int(11)"/>
            </key-property>
            <key-property name="level">
                <column name="level" sql-type="char(1)" length="1"/>
            </key-property>
        </composite-id>
    </class>
</hibernate-mapping>

Это класс Entity, который я написал:

@Entity
@Table(name = "Permissions", schema = "interapp", catalog = "")
@IdClass(PermissionsEntityPK.class)
public class PermissionsEntity {
    @Id
    private int id;

    @Id
    private String level;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getLevel() {
        return level;
    }

    public void setLevel(String level) {
        this.level = level;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        PermissionsEntity that = (PermissionsEntity) o;

        if (id != that.id) return false;
        if (level != null ? !level.equals(that.level) : that.level != null) return false;

        return true;
    }

    @Override
    public int hashCode() {
        int result = id;
        result = 31 * result + (level != null ? level.hashCode() : 0);
        return result;
    }
}

Я использую следующий IdClass:

public class PermissionsEntityPK implements Serializable {
    private int id;
    private String level;

    public PermissionsEntityPK(int id, String level) {
        this.id = id;
        this.level = level;
    }

    public PermissionsEntityPK() {

    }

    @Column(name = "id", nullable = false)
    @Id
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @Column(name = "level", nullable = false, length = 1)
    @Id
    public String getLevel() {
        return level;
    }

    public void setLevel(String level) {
        this.level = level;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        PermissionsEntityPK that = (PermissionsEntityPK) o;

        if (id != that.id) return false;
        if (level != null ? !level.equals(that.level) : that.level != null) return false;

        return true;
    }

    @Override
    public int hashCode() {
        int result = id;
        result = 31 * result + (level != null ? level.hashCode() : 0);
        return result;
    }
}

Я думаю, что может быть какое-то @Id неправильное место, но я не могу понять, где.Что мне здесь не хватает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...