У меня есть эта модель;
@Entity
class Product{
long id;
@OneToMany
private List<ProductFieldValue> fieldValues;
}
@Entity
class ProductFieldValue{
long id;
String value;
@ManyToOne
Product product;
@ManyToOne
ProductField field;
}
@Entity
class ProductField{
long id;
@Column(unique=true)
String name;
}
Я пытаюсь создать запрос, в котором я могу выполнить эти утверждения;
Продукт, у которого есть несколько значений полей с запрошенными полями, например;
(product.fieldValues.value = 'val1' && product.fieldValues.field.name = 'field1') && (product.fieldValues.value = 'val2' && product.fieldValues.field.name = 'field2')
Я дважды пытался ПРИСОЕДИНИТЬСЯ к одной и той же ассоциации с Hibernate, но, похоже, это вызывает исключение.
Как лучше всего добиться этого с помощью критериев или запросов HQL?
О, ты прав. Я забыл упомянуть. ProductField.name уникально
Я предполагаю, что ваша модель здесь несколько упрощена, но гарантированно ли
ProductField.name
будет уникальным? Если нет, я думаю, вам нужно правильно присоединиться, используя уникальные ключи, то есть PK / FK.