0
У меня есть 2 таблицы:один-ко-многим и множественные условия использования Критерии
- мастер-
table
с отдельными атрибутами некоторых объектов(id, name, title, ...)
- таблица с повторяющимися признаками
(master_id, attribute_name, attribute_value)
Примеры данных для № 2:
- 10, "authors", "John Bill"
- 10, "authors", "Merry J"
- 10, "owners", "Chris O."
- 11, "authors", "Andrew K."
Это один-ко-многим:
<set name="repeating" table="xxx" cascade="none" mutable="false" lazy="true" fetch="join">
<key column="...."/>
<one-to-many class="...." />
</set>
Я хочу найти мастер-объект (id=10)
где "authors" = "John Bill"
и "authors" = "Merry J"
и "owners" = "Chris O."
Для первого условия я могу сделать это таким образом:
session.createCriteria(Master.class)
.createCriteria("repeating")
.add(Restrictions.eq("attributeName", "authors"))
.add(Restrictions.eq("attributeValue", "John Bill"))
.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).list();
Как добавить другие условия, используя критерии?
Благодаря
Спасибо, но это не в порядке. «owner» - значение для «attributeName». Это означает, что это должно быть сделано следующим образом: '.add (Restrictions.eq (" attributeName "," owner ")) .add (Restrictions.eq (" attributeValue "," Chris O. "))' Но в этом случае он не вернет никаких результатов. – user3494426
извините за мою ошибку. то я предлагаю вам использовать 'Restrictions.disjunction()' для построения ваших критериев, или в этом случае вы можете найти HQL легче писать. – hsluo