gpt4 book ai didi

java - JPA 多对多约束

转载 作者:行者123 更新时间:2023-11-30 11:56:46 25 4
gpt4 key购买 nike

我是 JPA 的新手,如果这是一个非常基本的问题,我深表歉意。

我有一个应用程序,用户可以在其中对产品(范围为 0 到 10)进行投票,但只能投票一次。我很困惑在 JPA 中设置的多对多关系如何允许这样做。

我有一个用户对象、一个投票对象和一个产品对象。

用户可以对产品进行投票,但只能进行一次。一个产品可以有很多票,来自许多用户,但每个用户只能有一个。我将如何从 JPA 注释设计它?我从数据库设计中清楚地理解了这一点,而不是从 JPA 中。

最佳答案

由于您使用的是 JPA,它是一个对象-关系映射器,因此请按照不涉及 JPA 和数据库的情况来设计它。

我的意思是,以对您 try catch 的对象和关系有意义的方式构建您的对象模型(java 类),然后担心围绕这些对象正确配置 JPA。

我最后一次使用 JPA 是在推出 2.0 的时候,所以我不记得该规范支持使用作为 java.util.map 实现的字段的程度如何,但是 Map 会是一个很好的选择如果支持,还有很长的路要走。

具体来说,在您的 Product 对象中,您可以有一个 Map 类型的字段。

Map<User,Vote> votesOnThisProduct;

但老实说,当您仅从 java 类的角度考虑时,忽略 JPA 和数据库思维方式,无论哪种感觉最合理,都是可行的方法。

其他选项是定义额外的类,例如

public class ProductVoteRecord
{
User user;
Vote vote;
Product product;
}

然后通过 JPA 注释使用户和产品(以及可能的投票)成为复合主键。

但即使是这样的类也显示出被关系设计毒化的迹象,因为它本质上是一个连接表。

关于java - JPA 多对多约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4229396/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com