Java Hibernate多对多HQL查询

Java Hibernate多对多HQL查询,java,hibernate,join,many-to-many,hql,Java,Hibernate,Join,Many To Many,Hql,我有如下具有多对多关系的表: Clubmember(member\u id int(11)非空自动增量, 成员名称varchar(50),地址varchar(100)) 胶片(胶片id int(11)非空自动增量 标题varchar(50),发布日期varchar(10)) 租金(会员id int(11)不为空, 胶片id int(11)不为空 主键(filmId、成员id), 外键(成员id)引用(clubMember.memberId), 外键(film_id)引用(film.filmId)

我有如下具有多对多关系的表:

Clubmember(member\u id int(11)非空自动增量,
成员名称varchar(50),地址varchar(100))
胶片(胶片id int(11)非空自动增量
标题varchar(50),发布日期varchar(10))
租金(会员id int(11)不为空,
胶片id int(11)不为空
主键(filmId、成员id),
外键(成员id)引用(clubMember.memberId),
外键(film_id)引用(film.filmId)
)
并使用多对多注释对类进行建模,如下所示:

@Entity
@Table(name="ClubMember")

public class ClubMember {

    @Id @GeneratedValue
    @Column(name="member_id")
    private int memberId;

    @Column (name="member_name")
    private String name;

    @Column (name="address")
    private String address;

    @ManyToMany(fetch=FetchType.LAZY,mappedBy="renter")
    private Set<Film> rentedFilm=new HashSet<Film>();
    ....
}


@Entity
@Table(name="Film")
public class Film {

    @Id @GeneratedValue
    @Column(name="film_id")
    private int filmId;
    @Column (name="title")
    private String filmTitle;
    @Column (name="release_date")
    private String releaseDate;

    @ManyToMany(fetch=FetchType.LAZY, cascade=CascadeType.ALL)
    @JoinTable(name="RENT",
                joinColumns={@JoinColumn(name="film_id")},
                inverseJoinColumns={@JoinColumn(name="member_id")})
    private Set<ClubMember> renter=new HashSet<ClubMember>();

}
我尝试使用HQL,但发现了一些问题:

我试过这样的东西

 "Select F.filmId, F.filmTitle, M.name From Film F join F.renter M where F.filmId = :fId and M.memberId=:mId "
并从以下两个查询中为
fId
mId
提供参数:

从ClubMember中选择memberId
从Film中选择filmId

但结果是HQL查询的格式错误,出现异常

线程“main”org.hibernate.hql.ast.QuerySyntaxException中的异常:意外标记:,靠近第1行第116列[从com.mycontact.manytomy.Film中选择F.filmId、F.filmTitle、M.name加入F.renter M,其中F.filmId=:fId0_u、:fId1_u、:fId2_u和M.memberId=:mId0_0、:mId1_0]
事实上,我不太清楚如何使用HQL查询此类请求。谁能给点提示吗


用于hibernate的JAR版本: hibernate注释:3.3.0.GA hibernate commons注释:3.0.0.GA hibernate-c3p0:3.6.3.4最终版本

创建查询:

    List listFilmId=session.createQuery("Select F.filmId from Film F").list();
    List listMemberId=session.createQuery("Select M.memberId from ClubMember M").list();


    Query diffQuery=session.createQuery("Select F.filmId, F.filmTitle, M.name  "
            + " From Film F join F.renter M where F.filmId = :fId and M.memberId=:mId ");


    diffQuery.setParameterList("fId", listFilmId);
    diffQuery.setParameterList("mId", listMemberId);

如何创建查询?Hibernate和相关JAR的版本是什么?Hibernate的JAR版本:Hibernate注释:3.3.0.GA Hibernate commons注释:3.0.0.GA Hibernate-c3p0:3.6.3。最后,如何创建查询?Hibernate和相关JAR的版本是什么?Hibernate的JAR版本:Hibernate注释:3.3.0.GA Hibernate commons注释:3.0.0.GA Hibernate-c3p0:3.6.3.Final
    List listFilmId=session.createQuery("Select F.filmId from Film F").list();
    List listMemberId=session.createQuery("Select M.memberId from ClubMember M").list();


    Query diffQuery=session.createQuery("Select F.filmId, F.filmTitle, M.name  "
            + " From Film F join F.renter M where F.filmId = :fId and M.memberId=:mId ");


    diffQuery.setParameterList("fId", listFilmId);
    diffQuery.setParameterList("mId", listMemberId);