使用Play 2.2。和EBean,我想保留一个具有其他对象列表的对象:
public class ShoppingCart {
@ManyToMany
public List<Article> articles;
}
public class Article {
public int id;
}
由JPA创建的用于映射关系的表格如下所示(在Postgres中):
cart_id | article_id
------------------+--------------
61 | 3
61 | 6
因此,在这个例子中,第3条和第6条的组合只能在购物车61中存在一次。然而,第3条和第7条仍然是 free ,但一旦插入,也只能存在一次。
我希望每个ShoppingCart
都是唯一的,这意味着Article
的列表不能重复,所以基本上是一个唯一的约束,但是在多个外键上。
我如何实现这一目标?
答案 0 :(得分:1)
很难理解你真正想要的东西。
如果您想要一个购物卡列表链接到许多文章,您已经有了解决方案。
在目前的状态下,文章3和6可以存在于许多购物车中
cart_id | article_id
------------------+--------------
61 | 3
61 | 6
62 | 3
62 | 6
如果你想要的是,如果一个购物车链接到一组文章,没有其他购物车可以拥有相同的文章集,这不能仅通过sql和列约束来完成。 你必须创建java / scala代码来测试一组文章是否已经与购物车相关联。