0

次のシナリオでは、多対多の関連付けで、参加者がいるイベントのイベント(および人)のリストを取得するために、 getHibernateTemplate()。find()メソッドに渡す適切なクエリは何ですか。 ?

    _____________        __________________
   |             |      |                  |       _____________
   |   EVENTS    |      |   PERSON_EVENT   |      |             |
   |_____________|      |__________________|      |    PERSON   |
   |             |      |                  |      |_____________|
   | *EVENT_ID   | <--> | *EVENT_ID        |      |             |
   |  EVENT_DATE |      | *PERSON_ID       | <--> | *PERSON_ID  |
   |  TITLE      |      |__________________|      |  AGE        |
   |_____________|                                |  FIRSTNAME  |
                                                  |  LASTNAME   |
                                                  |_____________|



<class name="Event" table="EVENTS">
    <id name="id" column="EVENT_ID">
        <generator class="native"/>
    </id>   
    <property name="date" type="timestamp" column="EVENT_DATE"/>
    <property name="title"/>

    <set name="participants" table="PERSON_EVENT">
        <key column="EVENT_ID"/>
        <many-to-many column="PERSON_ID" class="Person"/>
    </set>      
</class>


<class name="Person" table="PERSON">
    <id name="id" column="PERSON_ID">
        <generator class="native"/>
    </id>
    <property name="age"/>
    <property name="firstname"/>
    <property name="lastname"/>

    <set name="events" table="PERSON_EVENT" inverse="true">
        <key column="PERSON_ID"/>
        <many-to-many column="EVENT_ID" class="Event"/>
    </set>

</class>

このようないくつかの試みは、次の例外を除いて失敗します。

getHibernateTemplate().find("from Event event where event.participants != null");

org.springframework.dao.InvalidDataAccessResourceUsageExceptionなどネストされた例外はorg.hibernate.exception.SQLGrammarExceptionです:クエリなどを実行できませんでした

ありがとう!

4

2 に答える 2

0

次のクエリを使用して、同じ結果を得ることができます。

event.participantsが空でないイベントイベントから

于 2012-04-13T12:35:47.907 に答える
0

Ram Reddyはクエリが機能することを提案しましたが、lazy = "false"を追加する必要があります:

<set name="participants" table="PERSON_EVENT" lazy="false">
        <key column="EVENT_ID"/>
        <many-to-many column="PERSON_ID" class="Person"/>
</set>  
于 2012-04-16T11:01:16.473 に答える