2011-02-09 3 views
3

у меня есть многие ко многим отношений между СМИ и теги:HQL JoinTable не доступен

Medium:

@ManyToMany(fetch=FetchType.EAGER) 
@IndexColumn(name="tags_index_column") 
@JoinTable(name="tag_map", 
      joinColumns={@JoinColumn(name="tag_id")}, 
      inverseJoinColumns={@JoinColumn(name="item_id")}) 
private List<Tag> tags; 

Теги:

@ManyToMany(mappedBy="tags") 
@JoinTable(name="tag_map", 
     joinColumns={@JoinColumn(name="item_id")}, 
       inverseJoinColumns={@JoinColumn(name="tag_id")}) 
private List<Medium> media; 

Я пытаюсь запросить таблицы объединения с HQL но я всегда получаю исключение:

String resultQueryString = "From tag_map" 

     Query resultQuery SessionFactory.getCurrentSession().createQuery(resultQueryString); 

Исключение:

org.springframework.orm.hibernate3.HibernateQueryException: tag_map is not mapped [From tag_map]; nested exception is org.hibernate.hql.ast.QuerySyntaxException: tag_map is not mapped [From tag_map] 

Что я в принципе хочу сделать, это запросить все средства массовой информации, который имеет бирку с определенным идентификатором. К сожалению, я не могу получить доступ к соединению.

Любые предложения? :)

ответ

7

Запросы HQL записываются в терминах сущностей, а не таблиц, поэтому вы не можете запросить произвольную таблицу таблиц.

Итак, вам нужно сформулировать запрос в терминах логических отношений между entites, а не путем доступа таблицы объединения напрямую, что-то вроде этого:

select m from Medium m join m.tags t where t.id = ? 

Смотрите также:

+0

благодарит вас за быстрый ответ :) – kiwaque

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