JPA独特的外键列表

时间:2014-09-17 10:13:22

标签: hibernate postgresql jpa playframework unique-constraint

使用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的列表不能重复,所以基本上是一个唯一的约束,但是在多个外键上。 我如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

很难理解你真正想要的东西。

如果您想要一个购物卡列表链接到许多文章,您已经有了解决方案。

在目前的状态下,文章3和6可以存在于许多购物车中

cart_id           | article_id
------------------+--------------
               61 |            3
               61 |            6
               62 |            3
               62 |            6

如果你想要的是,如果一个购物车链接到一组文章,没有其他购物车可以拥有相同的文章集,这不能仅通过sql和列约束来完成。 你必须创建java / scala代码来测试一组文章是否已经与购物车相关联。