首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Owner side with JoinColumns注释

Owner side with JoinColumns注释
EN

Stack Overflow用户
提问于 2016-07-16 06:19:12
回答 3查看 350关注 0票数 0

我有以下场景:

我很难弄清楚所有者是什么,为什么?你能帮帮忙吗?

代码语言:javascript
复制
public class Basket
{

...

@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    @JoinColumns({@JoinColumn(name="BASKET", referencedColumnName="ID")})   
    public Set<Product> getProductList() {
        return this.productList;
    }
}

public class Product
{

@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.REFRESH)
    @JoinColumns({@JoinColumn(name="BASKET", referencedColumnName="ID")})
    public Basket getBasket() {
        return this.basket;
    }

}
EN

回答 3

Stack Overflow用户

发布于 2016-07-16 06:33:25

篮子是关系中的“一个”方面,有许多产品被识别为篮子。因此,“1”通常是父代码,子记录引用父记录。通常,理解这些的最简单方法是查看连接后备表的数据库外键约束(希望有一个)。

票数 0
EN

Stack Overflow用户

发布于 2016-07-16 06:38:59

一个客户端有一个篮子,一个篮子有一个所有者,所以:

class Owner在关系@OneToOne中有篮子。

一个篮子有很多产品,所以:

class Basket在relation @OneToMany中有产品列表。

许多产品都有一个篮子,所以:

class Product@ManyToOne中有关系。

票数 0
EN

Stack Overflow用户

发布于 2016-07-16 17:17:07

JPA 2.0 specification中的摘录可能会帮助您理解这个问题:

2.10.2双向ManyToOne / OneToMany关系

假设:

实体A引用实体B的单个实例。实体B引用实体A21的集合。

实体A必须是关系的所有者。

以下映射默认值适用:

实体A映射到名为A的表。实体B映射到名为B的表。

表A包含表B的外键。外键列名称由以下各项组成:实体A的关系属性或字段的名称;"_";表B中的主键列的名称。外键列与表B的主键具有相同的类型。

在第11.1.21节中,陈述如下:

如果有多个联接列,则必须使用JoinColumns批注为每个联接列指定JoinColumn批注。必须在每个这样的JoinColumn注释中指定name和referencedColumnName元素。

在本例中,只有一个join列。因此,您不需要使用@JoinColumns注释。只需使用@JoinColumn即可。@JoinColumn注释总是在关系的拥有端使用,也就是本例中的@ManyToOne端。

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

https://stackoverflow.com/questions/38405744

复制
相关文章

相似问题

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