В моей модели есть следующие классы / сопоставления:
@Entity
public class UpSaleReason {
@Id
@GeneratedValue
private Long id;
@ManyToOne
private Subject subject;
@ElementCollection
private Set<Reason> relatesToRegisteredReasons;
}
@Embeddable
public class Reason {
@ManyToOne
private Subject subject;
@Enumerated(value = EnumType.STRING)
private Category category;
}
@Entity
public class Subject {
@Id
private Long id;
private String name;
}
@Entity
public class ConversationCase {
@Id
private Long id;
@Embedded
private Reason reason;
}
и я пытаюсь выполнить этот HQL:
select r from UpSaleReason as r, ConversationCase as cc
where cc.reason in elements(relatedReasons) and cc.id = :id
, что дает мне:
... Причина: java.sql.SQLException: Требуется выбрать один столбец в предикате IN в операторе [выберите upsalereas0_.id в качестве id8_, upsalereas0_.subject_id в качестве subject2_8_ из UpSaleReason upsalereas0_ перекрестное соединение ConversationCase spokati1_ где (versati1_subject_relatestor2_.category, relatestor2_.subject_id из up_sale_to_registered_reasons relatestor2_ где upsalereas0_.id = relatestor2_.UpSaleReason_id)) и spokatiati__.id =?]
Что я должен сделать, чтобы связать каждый из двух предметов в HQLдругое через отношение, которое можно описать как «значение свойства компонента одной сущности должно содержаться в ElementCollection другой»?