gpt4 book ai didi

java - JPA/Hibernate如何映射代表 "application properties"的bean

转载 作者:行者123 更新时间:2023-12-01 11:16:00 31 4
gpt4 key购买 nike

对于我正在开发的项目(一个 cms 解决方案),我有一个表来存储用户网站的所有属性(由 cms 管理)。

该表具有以下 DDL:

CREATE TABLE SITE_OPTIONS(
OPTION_ID int generated always as identity PRIMARY KEY,
OPTION_NAME varchar(200) not null,
OPTION_VALUE text,
LANGUAGE_ID int not null
)

这是表格内容的示例:

+-----------++---------------++------------------++-------------+
| OPTION_ID || OPTION_NAME || OPTION_VALUE || LANGUAGE_ID |
+-----------++---------------++------------------++-------------+
| 1 || SITE_TITLE || My site title || 1 |
+-----------++---------------++------------------++-------------+
| 2 || SITE_SUBTITLE || My site subtitle || 1 |
+-----------++---------------++------------------++-------------+
| 3 || TEMPLATE || interior_designer|| 1 |
+-----------++---------------++------------------++-------------+

我想要的,或者更好的是,我想要的是一个代表“siteoptions”的 bean:

public class SiteOptions{
private String siteTitle;

private String siteSubtitle;

private String template;

//getters/setters
}

我已经有了一个基于存储库的架构(经典的存储库模式实现),我可以用它来实现读取/保存功能。

你知道我是否可以使用纯 JPA/Hibernate 来实现这一点吗?

或者你曾经处理过这种情况吗?

提前致谢!

最佳答案

保存SiteOptions时,只需将选项矩阵转置为数据库表结构对应的实体类即可:

@Entity
public class SiteOptionEntity {
@Id
@Column(name = "OPTION_ID")
private Long id;

@Column(name = "OPTION_NAME")
private String name;

@Column(name = "OPTION_VALUE")
private String value;

@ManyToOne
@JoinColumn(name = "LANGUAGE_ID")
private Language language;
...
}

当然,使用适当的 id 生成器并决定是否引入单独的 Language 实体(如上所示)或仅使用语言 id。

关于java - JPA/Hibernate如何映射代表 "application properties"的bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31819679/

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