在Set<>上查询用HQL

时间:2014-01-26 16:28:19

标签: hibernate jpa

我有我的映射类:

@Entity
@Table(name = "contact", catalog = "pagesjaunes")
public class Contact implements java.io.Serializable {

    private Integer id;
    private String name;
    private Set<Phone> phones = new HashSet<Phone>(0);

    [...]

}



@Entity
@Table(name = "telephone", catalog = "pagesjaunes")
public class Phone implements java.io.Serializable {

    private Integer id;
    private Contact contact;
    private String phoneNumber;

    [...]
}

我可以使用ContactHQL上进行类似的查询:

from Contact where phones.phoneNumber = 06487954

1 个答案:

答案 0 :(得分:2)

不,语法不正确。 phones是Set的路径,Set没有phoneNumber属性。你需要一个联盟来做你想做的事:

select c from Contact c
inner join c.phones [as] phone
where phone.phineNumber = '06487954'

这当然是在the documentation中解释的。

注意:[as]表示您可以使用as或省略它。