为一对多关系创建hql查询

时间:2013-09-14 10:53:55

标签: hibernate hql

我有两个类Domain和UserProfile。它们之间的关系是一对多的。它在UserProfile Class中定义。我有firstName的用户和域对象我必须编写hql查询来检索UserProfile对象。 我是这样创造的 “从UserProfile作为配置文件,其中profile.domain ='”+ domain +“'和profile.firstName ='”+ firstName +“'”。但它没有用。

任何人都可以告诉我应该如何查询。

@Entity
@Table(name="TBL_STD_DOMAIN")
public class Domain implements Serializable {

  @Id
  @GeneratedValue
  @Column(name ="FLD_DOMAIN_ID")
  private Long domainId;

  @Column(name = "FLD_DOMAIN_NAME")
  private String domainName;
}


@Entity
@Table(name="TBL_STD_USERPROFILE")
public class UserProfile {

  @Id
  @GeneratedValue
  @Column(name = "FLD_USER_ID")
  private Long userId;

  @Column(name = "FLD_First_Name")
  private FirstName firstName;

  @ManyToOne
  private Domain domain;
}

1 个答案:

答案 0 :(得分:1)

永远不要使用字符串连接来将参数传递给查询。使用查询参数(命名,最好):

String hql = 
    "select u from UserProfile u"
    + " where u.firstName = :theFirstName"
    + " and u.domain = :theDomain";

return session.createQuery(hql)
              .setParameter("theFirstName", firstName)
              .setParameter("theDomain", domain)
              .list();