如何在Hibernate中持久化字符串列表?

00jrzges  于 2023-01-09  发布在  其他
关注(0)|答案(3)|浏览(185)

我在Hibernate中MapList时似乎遇到了问题,在我们的项目中,类Card包含类Answer,类Answer包含List<String>
List<String>可以通过Hibernate使用注解进行Map吗?我的意思是,因为它没有@Entity注解?
问候

neekobn8

neekobn81#

使用@ElementCollection

@ElementCollection
@CollectionTable(name="Nicknames", joinColumns=@JoinColumn(name="user_id"))
@Column(name="nickname")
public List<String> getNicknames() { ... }
    • 源代码:**7.2.3.基本类型和可嵌入对象的集合
wh6knrhe

wh6knrhe2#

尝试

@org.hibernate.annotations.CollectionOfElements(
        targetElement = java.lang.String.class
    )
    @JoinTable(
        name = "foo",
        joinColumns = @JoinColumn(name = "foo_id")
    )
    @org.hibernate.annotations.IndexColumn(
        name = "POSITION", base = 1
    )
    @Column(name = "baz", nullable = false)
    private List<String> arguments = new ArrayList<String>();

或参见this detail example

am46iovg

am46iovg3#

如果您愿意将它们存储在与JSON相同的列中(MySQL、PostgreSQL也支持索引和二进制JSON),则可以简单地使用io.hypersistence/hypersistence-utils-hibernate-52库。

@TypeDefs({
    @TypeDef(name = "json", typeClass = JsonType.class)
})
public class YourEntity {
   @Column(nullable = false)
   @Type(type = "json")
   private List<String> fieldName = List.of();
   ...
}

参见完整指南here

相关问题