У меня есть объект: HtmlElement
с ниже @OneToOne
отношениями с объектом: Component
Объект QueryParameter:
@Id
@Column(name = "QUERY_PARAMETER_ID")
private int queryParameterId;
@Column(name = "QUERY_PARAMETER")
private String queryParameter;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "QUERY_ID")
private Query Query;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "HTML_ELEMENT_ID")
private HtmlElement HtmlElement;
HtmlElement Entity:
@Id
@Column(name = "HTML_ELEMENT_ID")
private int htmlElementId;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "COMPONENT_ID")
private Component Component;
@Column(name = "HTML_ELEMENT_ID_NAME")
private String htmlElementIdName;
@Column(name = "HTML_ELEMENT_SHOWING_NAME")
private String htmlElementShowingName;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "TYPE_ID")
private Type Type;
@Column(name = "HTML_ELEMENT_MAXLENGTH")
private String htmlElementMaxlength;
@Column(name = "HTML_ELEMENT_PLACEHOLDER")
private String htmlElementPlaceholder;
@Column(name = "HTML_ELEMENT_HELPTEXT")
private String htmlElementHelptext;
@OneToOne(mappedBy = "HtmlElement")
private QueryParameter QueryParameter;
Компонент Entity:
@Id
@Column(name = "COMPONENT_ID")
private int componentId;
private String component;
@ManyToMany(cascade = { CascadeType.ALL })
@JoinTable(
schema = "APP_OWNER",
name = "_COMPONENT_TYPE",
joinColumns = { @JoinColumn(name = "COMPONENT_ID") },
inverseJoinColumns = { @JoinColumn(name = "TYPE_ID") }
)
@OrderBy("TYPE_NAME")
private Set<Type> Types = new HashSet<>();
@OneToOne(mappedBy = "Component")
private HtmlElement HtmlElement;
Тип Entity:
@Id
@Column(name = "TYPE_ID")
private int typeId;
@Column(name = "TYPE_NAME")
private String typeName;
@ManyToMany(mappedBy = "Types")
private Set<Component> Components = new HashSet<>();
@OneToOne(mappedBy = "Type")
private HtmlElement HtmlElement;
В основном, отношения здесь означают, что один элемент html имеет один связанный с ним компонент.
Теперь, когда я хочу найти все компоненты, как показано ниже:
List<Component> componentList = componentRepo.findAllByOrderByComponentIdAsc();
Это дает мне следующая ошибка: More than one row with the given identifier was found: 3
Если я запускаю сгенерированный запрос, он возвращает 3 строки, но это не имеет никакого смысла, так как Компонент имеет различные html компоненты (input, select, et c) и HtmlElement использует идентификатор компонента и дополнительную информацию, относящуюся к этому, совершенно нормально повторно использовать один и тот же идентификатор компонента в разных элементах HtmlElements.
Я попытался каскадировать все и удалить сироту, как предложено в здесь но не сработало, как и другие предложения на той же странице. * 103 8 *
Есть идеи, как это исправить, пожалуйста?