一个表 tb_userpro  两个字段 userId Project_ID两个字段是主键
用hibernate 生成表对应的实体类
UserPro.java 如下
@Entity
@Table(name = "tb_userpro")
@IdClass (userMenuId.class)
public class UserPro implements java.io.Serializable{
private static final long serialVersionUID = 5454155825314635342L; private UserProjectId id; public userPro (){
}
public userPro (UserProjectId id) {
this.id = id;
}

@EmbeddedId
public UserProjectId getId() {
return this.id;
}

public void setId(UserProjectId id) {
this.id = id;
}

private String projectId;
private String userId;
@Id
public String getProjectId() {
return projectId;
}
public void setProjectId(String projectId) {
this.projectId = projectId;
}
@Id
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}UserProjectId.java 类 如下   
@Embeddable
public class UserProjectId implements java.io.Serializable{
private static final long serialVersionUID = 5454155825314635342L;

private java.lang.String projectId;
private java.lang.String userId; public UserProjectId(){
} public UserProjectId(
java.lang.String projectId,
java.lang.String userId
){
this.projectId = projectId;
this.userId = userId;
}

public void setProjectId(java.lang.String value) {
this.projectId = value;
}

@Column(name = "Project_ID", unique = false, nullable = false, insertable = true, updatable = true, length = 20)
public java.lang.String getProjectId() {
return this.projectId;
}

public void setUserId(java.lang.String value) {
this.userId = value;
}

@Column(name = "userId", unique = false, nullable = false, insertable = true, updatable = true, length = 20)
public java.lang.String getUserId() {
return this.userId;
}
请问我该如何写hql语句查询出 userId 对应的projectId呢,
我像往常一样用hql语句查询
getHibernateTemplate().find("from UserPro proPur where proPur.userId=?", userId);是不是 复合主键就不能这样查了啊? 总是会报空异常,不明白是怎么回事,希望能得到帮助?