【问题标题】:HQL query in many-to-many unidirectional relation多对多单向关系中的 HQL 查询
【发布时间】:2014-09-03 09:10:08
【问题描述】:

我有 2 个实体:主题和评论。它们具有多对多的关系。 这是 2 个 hbm.xml 配置。

<hibernate-mapping package="entity"> <class name="Comment" table="COMMENT"> <id name="id" column="COMMENT_ID"> <generator class="increment"/> </id> <property name="message" column="MESSAGE" not-null="true"/> <many-to-one name="author" class="entity.User" fetch="select"> <column name="USER_ID" not-null="true"/> </many-to-one> </class> </hibernate-mapping>

<hibernate-mapping package="entity">
<class name="Topic" table="TOPIC">
    <id name="id" column="TOPIC_ID">
        <generator class="increment"/>
    </id>
    <bag name="comments" table="TOPIC_COMMENT" cascade="all" inverse="false" fetch="join">
        <key>
            <column name="TOPIC_ID"/>
        </key>
        <many-to-many class="entity.Comment" column="COMMENT_ID"/>
    </bag>
</class>

所以,我需要按主题获取所有 cmets。 我创建了一个简单的 hql 查询"from Topic t inner join t.comments where t.id = :id",但它没有奏效。请帮帮我。

【问题讨论】:

    标签: java mysql hibernate many-to-many hql


    【解决方案1】:
    select t from Topic t inner join t.comments tc where tc.id = :id
    

    【讨论】:

    • 您能否为您的答案添加一些解释?
    • 你是如此接近,但正确的查询是select tc from Topic t inner join t.comments tc where t.id = :id
    • 有效,但查询需要的时间是我直接查询时的两倍。如何改进?
    猜你喜欢
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    • 2012-05-23
    • 2013-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-18
    相关资源
    最近更新 更多