首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@joinTable关系

@joinTable关系
EN

Stack Overflow用户
提问于 2013-10-30 09:10:06
回答 1查看 179关注 0票数 0

有两个表,如下所示:

代码语言:javascript
复制
AFFILIATES
----------
affiliateId (String) (PK)

CONVERSION
-----------
conversionId (Integer) (PK)
purchaseId (Integer) (not null)

PURCHASE
---------
purchaseId (Integer) (PK)
associateId (String) (allow NULL)

实体映射如下:

代码语言:javascript
复制
@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

我已经尝试过遵循代码,但是它的不工作

代码语言:javascript
复制
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。

如果你有什么想法,请告诉我。

转换应该通过第三个表获取。

EN

回答 1

Stack Overflow用户

发布于 2013-10-30 11:56:04

按照我对模式的理解,购买并不仅仅是一个连接表,而是一个独立的实体。因此,创建一个购买实体,并与关联实体创建适当的关系。一个典型的联接表至少有两个指向相关表的外键。它可能有一个代理主键或一个复合主键(由两个外键组合而创建)。因为购买有一个主键(很可能是代理项)和另一个列,它是外键,所以更好地将购买建模为一个实体。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19678017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档