有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

SpringJPA:映射java。util。映射到单个表

因此,基本上,我正在尝试为我的应用程序的全局、系统范围的配置实现一个简单的键值存储,为此,我想将整个java.util.Map映射到数据库中的一个表?例如:

// initialization

globalConfig.put("property1", "130")
globalConfig.put("property2", "abc")
globalConfig.put("propertyXY", "0")

映射到:

全局配置:

| key        | value |
|------------|-------|
| property1  | 130   |
| property2  | abc   |
| propertyXY | 0     |

使用JPA/Hibernate是否有一种干净简单的方法来实现这一点


共 (2) 个答案

  1. # 2 楼答案

    您必须将其映射为一个实体。大概是这样的:

    @Entity
    @Table(name="GLOBAL_CONFIG")
    public class GlobalConfig {
        @Id
        private String key;
        private String value;
    }
    

    如果您想要一个映射,则必须通过流操作将List<GlobalConfig>转换为Map<String, String>,其大致如下所示:

    interface GlobalConfigRepository extends Repository<GlobalConfig, String> {
        default Map<String, String> getMap() {
            return findAll().stream().collect(Collectors.toMap(GlobalConfig::getKey, GlobalConfig::getValue))
        }
    }