栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

将实体中的列表转换为数据库中的单个字符串列

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将实体中的列表转换为数据库中的单个字符串列

如果您使用JPA 2.1,则可以创建一个

AttributeConverter

@Converterpublic class StringListConverter implements AttributeConverter<List<String>, String> {  @Override  public String convertToDatabaseColumn(List<String> list) {    // Java 8    return String.join(",", list);     // Guava    return Joiner.on(',').join(list);   }  @Override  public List<String> convertToEntityAttribute(String joined) {    return new ArrayList<>(Arrays.asList(joined.split(",")));  }}

您可以在实体中使用此转换器:

@Column@Convert(converter = StringListConverter.class)private List<String> strings;

对于JPA 2.1之前的版本,您可以手动执行以下操作:

@Entityprivate MyEntity {  ...  private String strings;  public List<String> getStrings() {    return Arrays.asList(strings.split(","));  }  public void setStrings(List<String> list) {    strings = String.join(",", list);  }}

我将其包装

Arrays.asList
ArrayList
转换器中,因为结果存储在属性中,对该列表所做的任何更改都将写回到数据库中-
因此,我需要一个可更改的列表(我无法在的结果中添加任何内容
Arrays.asList
)。在 2.1之前的
解决方案中,结果未与属性关联,并且可变列表不会与属性同步。

要查询包含此类属性中特定项目的实体,请在此处查看我的答案



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/447546.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号