gpt4 book ai didi

java - 如何使用鉴别器将一对多集合与连接表映射

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

我正在尝试用 hibernate 实现一个基本的标记系统。问题是每个人都在子类化 Tag 以使映射更容易。我想让我的 Tag 对象不知道它的使用方式。它永远不应该特定于某种类型。然而,事实证明绘制 map 非常困难。这就是我想要实现的目标。

我从标签和前缀两个类开始。前缀将包含标签的集合。我有3张 table 。 prefix、tags 和 tagged 其中 tagged 是连接前缀和标签的表。该枚举列出了我将标记的其他对象。这就是我想要支持不同类型的方式。

看起来像这样:

CREATE TABLE tagged(
tag_id INT(11) NOT NULL,
object_id INT(11) NOT NULL,
discriminator ENUM('PREFIX', 'ROOT', 'SUFFIX')
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

在映射的核心,我有一个一对多映射

@OneToMany
@JoinTable(name = "tagged", joinColumns = { @JoinColumn(name = "object_id") }, inverseJoinColumns = @JoinColumn(name = "id"))
public List<Tag> getTags() {
return tags;
}

所以,问题是,如何加入鉴别器表并为其设置值?我最初尝试过:

@OneToMany
@JoinTable(name = "tagged", joinColumns = @JoinColumn(name = "object_id"), inverseJoinColumns = @JoinColumn(name = "id"))
@Where(clause = "discriminator='PREFIX'")
public List<Tag> getTags() {
return tags;
}

这不起作用。 Hibernate 正在标签表中查找鉴别器。有任何想法吗?谢谢!

最佳答案

您是否尝试过使用 WhereJoinTable annotation ?鉴于它的文档,它应该做你想做的事。

关于java - 如何使用鉴别器将一对多集合与连接表映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6443253/

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