有两个表,如下所示:
AFFILIATES
----------
affiliateId (String) (PK)
CONVERSION
-----------
conversionId (Integer) (PK)
purchaseId (Integer) (not null)
PURCHASE
---------
purchaseId (Integer) (PK)
associateId (String) (allow NULL)实体映射如下:
@Entity
@Table(name="AFFILIATES")
class Affiliate implements Serializable {
@Id
@Column(name= "affiliate_id")
private String affiliateId;
@OneToMany(mappedBy="affiliate", fetch=FetchType.LAZY)
private Set<Conversion> conversion;
public String getAffiliateId() {
return affiliateId;
}
public void setAffiliateId(String affiliateId) {
this.affiliateId = affiliateId;
}
public Set<Conversion> getConversion() {
return conversion;
}
public void setConversion(Set<Conversion> conversion) {
this.conversion = conversion;
}
}
@Entity
@Table(name="CONVERSION")
class Conversion implements Serializable{
@Id
@Column(name="conversion_id")
private int conversionId;
@ManyToOne(optional=true, fetch=FetchType.LAZY)
private Affiliate affiliate;
public int getConversionId() {
return conversionId;
}
public void setConversionId(int conversionId) {
this.conversionId = conversionId;
}
public Affiliate getAffiliate() {
return affiliate;
}
public void setAffiliate(Affiliate affiliate) {
this.affiliate = affiliate;
}
}现在,我想让获得--给定affiliateId的所有转换
PURCHASE有两列,一列来自CONVERSION,一列来自AFFILIATES
我已经尝试过遵循代码,但是它的不工作,
String hql = "from Affiliate as a where a.affiliateId = 'abc'";
Query q = s.createQuery(hql);
Affiliate a = (Affiliate) q.uniqueResult();
System.out.println(a);
a.getConversion().size();我不知道如何得到所有的转换为affiliateID abc。
如果你有什么想法,请告诉我。
转换应该通过第三个表获取。
发布于 2013-10-30 11:56:04
按照我对模式的理解,购买并不仅仅是一个连接表,而是一个独立的实体。因此,创建一个购买实体,并与关联实体创建适当的关系。一个典型的联接表至少有两个指向相关表的外键。它可能有一个代理主键或一个复合主键(由两个外键组合而创建)。因为购买有一个主键(很可能是代理项)和另一个列,它是外键,所以更好地将购买建模为一个实体。
https://stackoverflow.com/questions/19678017
复制相似问题