【问题标题】:HQL JoinTable not accessibleHQL JoinTable 无法访问
【发布时间】:2011-06-24 01:29:41
【问题描述】:

媒体和标签之间存在多对多关系:

中等:

@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]

我基本上想要做的是查询所有具有特定 id 标记的媒体。不幸的是,我无法访问可连接的。

有什么建议吗? :)

【问题讨论】:

    标签: hibernate hql jointable


    【解决方案1】:

    HQL 查询是根据实体而不是表编写的,因此您不能查询任意表表。

    因此,您需要根据实体之间的逻辑关系而不是直接访问连接表来制定查询,如下所示:

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

    另请参阅:

    【讨论】:

      猜你喜欢
      • 2013-01-30
      • 2011-06-27
      • 1970-01-01
      • 1970-01-01
      • 2014-01-29
      • 2013-09-07
      • 2021-04-26
      • 2017-05-20
      • 1970-01-01
      相关资源
      最近更新 更多