gpt4 book ai didi

java - JPA 加入继承类

转载 作者:行者123 更新时间:2023-12-01 08:49:18 24 4
gpt4 key购买 nike

在 jpa 中,我有一些实体(目前是 ContentProduct,但可能会出现更多),它们应该加入到 Comment 实体。

问题是我不想在评论实体中为每个连接实体(产品、内容..)添加额外的字段(和表中的列),因为这些实体将来会增加。

我发现一个半解决方案是使用单表继承并创建具体的 Comment 类,例如 CommentContentCommentProduct,并使用鉴别器列但加入实体(Content 和产品)仍然​​存在。

你有什么建议?

编辑:

例如评论和内容之间的示例关系将是@MayToOne,即许多评论属于一个内容,对于产品也是如此。

编辑2

在纯表关系模式中(没有像 hibernate/jpa 这样的 ORM),我可以做这种解决方案:添加到评论表中的列1-item_type2-item_id女巫item_type指定其他边表名称(产品,我的问题中的内容)和item_id指定表的外键它的名称位于 item_type 列

如何在 Jpa/hibernate ORM 中对此进行建模?

最佳答案

您可以使用 Hibernate 来模拟您所描述的内容

class Content {
@OneToMany
@JoinColum(name = "item_id")
@Where("item_type = 'CONTENT'")
Set<Comment> comments;
}

class Product {
@OneToMany
@JoinColum(name = "item_id")
@Where("item_type = 'PRODUCT'")
Set<Comment> comments;
}

class Comment {
@Id
@GeneratedValue
Long id;
@Enumerated(STRING)
ItemType itemType;
Lont itemId;
}

enum ItemType {
CONTENT,
PRODUCT
}

关于java - JPA 加入继承类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42481956/

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