Как аннотировать самоссылающиеся составные объекты первичного ключа в Hibernate? - PullRequest
0 голосов
/ 02 апреля 2019

Я настраиваю объект с именем Category с помощью составного первичного ключа, состоящего из имени и нулевой родительской самореференции.

Обычно я бы хэшировал имя категории и ее родителя для создания уникального ключа ИЛИ помечал столбцы как составной уникальный ключ с родительским столбцом, который сам ссылался на ту же таблицу.

Я хочу избежать дублирования категорий с одним и тем же родителем, но разрешить повторное использование названий категорий под разными родителями.

Если я использую встраиваемый PK, как я могу ссылаться на объект, который использует этот встраиваемый ключевой объект внутри встраиваемого объекта?

красное поле имеет нарушение ограничения

@Entity
class Guild
        implements Serializable {

    @EmbeddedId
    private GuildEmbeddedPK id;

    @Column (nullable = false)
    private String note;

    @ManyToOne
    private Guild parent;

    @OneToMany
    private List<Guild> children;

    public
    Guild() {
    }
}

@Embeddable
public
class GuildEmbeddedPK implements Serializable {

    @Column(nullable = false)
    private String name;

    @ManyToOne
    Guild guild;
}

Я знаю, что этот код не работает, но мне нужно попытаться заставить его работать с повторно используемыми именами, но не с одним и тем же родителем. Я портирую старый дизайн в Hibernate для некоторых тестов.

Заранее спасибо!

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