gpt4 book ai didi

java - 持久化 List 时无法创建唯一的字符串表

转载 作者:太空宇宙 更新时间:2023-11-04 08:56:32 25 4
gpt4 key购买 nike

假设我有一个实体:

@Entity
public class AnEntity implements Serializable{
@ElementCollection
private List<String> strings = new Vector<String>();
// other stuff
}

我正在使用 EclipseLink(JPA 2.0)。

此列表中的字符串在许多 AnEntity 对象中可能具有相同的值。也就是说,许多AnEntity对象可能引用相同的字符串。

问题在于 @ElementCollection 提供的默认映射在字符串表 (ANENTITY_STRINGS) 中留下了许多重复项。我如何映射它,以便在保存字符串列表时,唯一地保存值,这样我就没有大量重复字符串的表?

<小时/>

我应该补充一点,我尝试使用“占位符”类,它有一个成员,即字符串。不幸的是,这样做会使关联表中的数据完全无法读取,我确信它会保存为 blob 或 lob。因此,例如我做了这样的事情,而不是使用列表:

@ElementCollection
@ManyToMany
private List<StringWrapperClass> strings = new Vector<StringWrapperClass>();

然后我的实体看起来像:

@Entity
public class StringWrapperClass implements Serializable {
private String string;
// other stuff, getters, setters, id, etc
}

但正如我所说,这只将字节放入 ANENTITY_STRINGS 中。我无法想象这是一种“正确”的方法。

最佳答案

因此,您想要创建一个映射,其中每个 AnEntity 都有许多字符串,并且每个字符串可以属于多个 AnEntities。那么您应该使用@ManyToMany,因为它是多对多关系。

关于java - 持久化 List<String> 时无法创建唯一的字符串表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2185351/

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