gpt4 book ai didi

java - Hibernate 在不引用其他表的情况下持久化 Map

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:09:40 24 4
gpt4 key购买 nike

你能帮我用 Hibernate 持久化字符串映射吗?

map 值来自客户端并且是随机的,所以我不想为 map 值存储单独的表

异常

Caused by: org.hibernate.AnnotationException: Associated class not found: java.lang.String

代码

@Entity
public class UserConfig {

@Id
@SequenceGenerator(sequenceName = "CONFIG_SEQ", name = "ConfigSeq", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "ConfigSeq")
private Long id;

@ElementCollection(targetClass = String.class)
@CollectionTable(name = "MAP")
@MapKey(name="key")
@Column(name="value")
private Map<String, String> map;

更新

能否请您也解释一下如何坚持 Map<MyEnum, String> , 如果 MyEnum是一个未映射的类?

最佳答案

根据规范,你应该这样标注 map :

    @ElementCollection(targetClass = String.class)
@CollectionTable(name = "MAP")
@MapKeyColumn(name="key")
@Column(name="value")
private Map<String, String> map;

所以@MapKeyColumn,而不是@MapKey

本地图定义为:

private Map<Basic, Basic> map; // (i.e. Map<String, String>)

当你将 map 定义为:

private Map<Basic, Entity> map; // (i.e. Map<String, User>)

最后,当您有 map 定义的广告时,您可以使用 @MapKeyEnumerated 注释:

private Map<Enumeration, Basic> map; // (i.e. Map<MyEnum, String>)

关于java - Hibernate 在不引用其他表的情况下持久化 Map<String, String>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41697714/

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