复制和粘贴我前面问题的一些介绍部分。
我在Eclipselink2.3.2中使用JPA2.0,在其中,我在产品和它们的颜色之间建立了多对多的关系。一个产品可以有多种颜色,一种颜色可以与多种产品相关联。这种关系在数据库中由三个表表示。
public void addToProduct(Product product) {
this.getProductSet().add(product);
product.getColourSet().add(this);
}
public void removeFromProduct(Product product) {
this.getProductSet().remove(product);
product.getColourSet().remove(this);
}
@Override
@SuppressWarnings("unchecked")
public void insert(List<Colour> colours, Product product) {
for (Colour colour : colours) {
colour.addToProduct(product);
}
}
@Override
@SuppressWarnings("unchecked")
public void delete(Colour colour, Product product) {
colour.removeFromProduct(product);
}
public class Product implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "prod_id")
private Long prodId;
private static final long serialVersionUID = 1L;
@JoinTable(name = "prod_colour", joinColumns = {
@JoinColumn(name = "prod_id",
referencedColumnName = "prod_id")},
inverseJoinColumns = {
@JoinColumn(name = "colour_id", referencedColumnName = "colour_id")})
@ManyToMany(fetch = FetchType.LAZY)
private Set<Colour> colourSet;
//Getters and Setters.
}
colour
实体类。
public class Colour implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "colour_id")
private Long colourId;
private static final long serialVersionUID = 1L;
@ManyToMany(mappedBy = "colourSet", fetch = FetchType.LAZY)
private Set<Product> productSet;
//Setters and getters.
}
为了更新该连接表,您需要例如完全/急切加载的实体,并且在编写代码之后,不要忘记调用:
entityManager.merge(colour);
entityManager.merge(product);
问题内容: 我要删除具有多对多关系的一个站点上的表中的一行。我还想删除该关系另一侧的所有相关行。 例如,假设我有以下表格,并且想从中删除一行。我也想从中删除所有相关的行,当然,也删除其中不再需要的任何行。 我知道如何在查询中连接以上表格。但是我看不到如何删除整个关系中的数据。 注意:关系的两端都实现级联删除。因此,例如,从中删除行将删除中的任何相关行。但是显然,这不会传播到表中。 问题答案: 我认
假设我们有两个实体,Entity和Entity。有多个s。节点可以属于多个集群。因此,在
问题内容: 我有一个Firebase数据库。我有公司和承包商。一个承包商可以为多个公司工作,而一个公司可以有多个承包商。这是直接的多对多关系。我希望能够回答有关公司和承包商的问题: 给定一家公司,他们是当前的承包商。 给承包商一个他们要工作的公司。 在Firebase中构造数据的替代方法有哪些? 问题答案: 自我回答确实是对此进行建模的一种方法。它可能是在关系数据库中建模的最直接等效方法: 承办商
问题内容: 我知道在Elasticsearch中,我们可以在文档之间建立子/父关系。 然后,在建立索引时,我可以传递父代ID,以便将子文档和父文档链接起来: 无论如何,在Elasticsearch中建立多对多关系的模型吗? 数据驻留在具有以下架构的MySQL数据库中: 当前这是我的映射(请原谅数组表示法,我在PHP中使用Elastica与我的Elasticsearch服务器通信): 这种方法的问题
我有一个Firebase数据库。我有公司和承包商。一个承包商可以为多个公司工作,一个公司可以有多个承包商。这是一种简单的多对多关系。我希望能够回答有关公司和承包商的问题: 给定一家公司,谁是当前的承包商 给定一个承包商,他们为哪些公司工作 在firebase中构建数据的替代方案是什么?
在我的项目中,我使用Spring数据jpa。我有多对多关系的表格。我的实体: 和零件: 现在在Controller中,我尝试从表部分中删除一行: 但我有例外: 区分完整性约束冲突:“FK9Y4MKICYBLJWPENACP4298I49:PUBLIC.PARTS外键(ID\u导出)引用PUBLIC.EXPORT(ID)(1)”;SQL语句:/*删除com.aleksandr0412.demo.en