Spring 多对多关联上的getHibernateTemplate().find()
在下面的场景中,对于多对多关联,传递给getHibernateTemplate().find()方法的正确查询是什么,以便获取具有参与者的事件的事件(和人员)列表Spring 多对多关联上的getHibernateTemplate().find(),spring,hibernate,Spring,Hibernate,在下面的场景中,对于多对多关联,传递给getHibernateTemplate().find()方法的正确查询是什么,以便获取具有参与者的事件的事件(和人员)列表 _____________ __________________ | | | | _____________ | EVENTS | | PERSON_EVENT | |
_____________ __________________
| | | | _____________
| 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>
org.springframework.dao.InvalidDataAccessResourceUsageException等
嵌套异常为org.hibernate.exception.sqlgrammareexception:无法执行查询
等等
谢谢 您可以使用以下查询获得相同的结果
来自Event Event,Event.participants不是空的Ram Reddy建议的查询工作,但我需要添加lazy=“false”:
getHibernateTemplate().find("from Event event where event.participants != null");
<set name="participants" table="PERSON_EVENT" lazy="false">
<key column="EVENT_ID"/>
<many-to-many column="PERSON_ID" class="Person"/>
</set>