2013-06-12 3 views
0

У меня есть 2 сущности со следующими метамодели.Критерии JPA ManyToMany Присоединиться или не присоединиться?

@StaticMetamodel(SearchIn.class) 
public class SearchIn_ { 
    public static volatile SingularAttribute<SearchIn, Integer> id; 
    public static volatile SingularAttribute<SearchIn, String> searchString; 
    public static volatile SetAttribute<SearchIn, Take> takes; 
    // Other Attributes... 
} 

@StaticMetamodel(Take.class) 
public class Take_ { 
    public static volatile SingularAttribute<Take, Integer> id; 
    // Other Attributes... 
} 

Отношения является ManyToMany нанесены на карту SearchIn.Class и Take.Class не имеет referene к SearchIn.Class.

Теперь мне нужно все Принимать, которые сопоставляются с SearchIn с определенным поисковым строком. Я хочу использовать критерии api, но я не могу понять, какая из них мне нужна в качестве Root и как делать с этим соединения. Я видел некоторые другие вопросы, которые похожи, но не реально, что я хочу, и я не получаю его на работу:/

Так может ли кто-нибудь дать мне подсказку и помочь мне построить это?

ответ

2

Почему бы вам не попробовать простое соединение:

Root<SearchIn> root = criteriaQuery.from(SearchIn.class); 
Join<SearchIn, Take> takeJoin = root.join(SearchIn_.takes); 
criteriaQuery.where(builder.equal(root.get(SearchIn_.searchString), "bla")); 


TypedQuery<SearchIn> typedQuery = entityManager.createQuery(criteriaQuery); 
return typedQuery.getResultList(); 

ваше возвращаемое значение будет Список SearchIns. и вы просто называете getet для своих Takes. Я не пробовал, если он работает. Я просто скопировал его из некоторых фрагментов кода.

+0

Привет, спасибо за ваши ответы на мои основные проблемы, что я не понял, как получить мысли из запроса критериев и как он работает ... Возможно ли получить запрос, который не только получить Сущность, а также что-то агрегированное? как часто обнаруживается, что определенный идентификатор имеет эту запись, это самое важное? –

+0

да, вы можете использовать пользовательский класс вместо сущности: проверить главы «массив критериев» и «конструкцию CriteriaBuilder»: http://www.objectdb.com/java/jpa/query/jpql/select , хотя объект db не всегда является хорошим источником для простых jpa/критериев api вопросов, но это кажется правильным и очень похоже на то, что я использую. – tagtraeumer

Смежные вопросы