java - 如何用JPA映射一个HashMap?

标签 java jakarta-ee jpa

我如何注释 HashMap<Enum, Boolean>这样JPA就可以持久化它?

@Entity
public class User {
    private Map<UserType, Boolean> settings;
}

public enum UserType {
    USER, ADMIN
}

我试过@ManyToMany(cascade = CascadeType.ALL)但这给了我一个错误 Boolean不是一个实体(当然这是真的)。​​

最佳答案

@ManyToMany 不是 HashMap 的最佳解决方案。使用@ElementCollection注释来映射您的表,然后中间表将生成名为user_type(如注释中所定义)。以下是注释示例:

    @ElementCollection
    @CollectionTable(name = "user_type")
    @MapKeyColumn(name = "user_type_col")
    @Column(name = "boolean_col")
    private Map<UserType, Boolean> userType = new HashMap<>();

关于java - 如何用JPA映射一个HashMap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19199701/

相关文章:

javax.realtime 包丢失

java - 如何将 Integer 包装器类传递给 java 中的方法?

java - ConsumerInfo 类型中的 getPactFile() 方法已弃用

java - 添加存储在数组列表中的 double 值

java - 命令按钮操作不适用于自定义标记

java - JavaFX 可以用于在 Java EE 应用程序中构建 UI 部分吗?

Java维基引擎

java - 如何在 Jpa 实体中使用 Java 继承

mysql - 在 MySQL 中将 UUID 保存为 varbinary(16) 导致 com.mysql.jdbc.MysqlDataTruncation : Data truncation: Data too long for column 'ID' at row 1

java - JPA,独立应用程序和实体管理器