Я настраиваю объект с именем 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 для некоторых тестов.
Заранее спасибо!