gpt4 book ai didi

mysql - Spring data JPA中将java bean的List转换为mysql的json

转载 作者:行者123 更新时间:2023-11-29 10:40:17 26 4
gpt4 key购买 nike

我尝试通过 spring-data-jpa 使用 @Convert,但出现错误,这是我的代码:

entity
@Convert(converter = ListExtendConverterJson.class)
private List<Long> receivers;

ListExtendConverterJson implements AttributeConverter<List<Long>, String>:

@Override
public String convertToDatabaseColumn(List<Long> list) {
String result = JSONArray.toJSONString(list);
return result;
}

@Override
public List<Long> convertToEntityAttribute(String s) {
List<Long> result = JSONArray.parseArray(s, Long.class);
return result;
}

这是错误消息:

Caused by: java.lang.ClassCastException: java.lang.Long cannot be cast to java.util.List
at com.qf.posp.pub.config.entity.json.ListExtendConverterJson.convertToDatabaseColumn(ListExtendConverterJson.java:23)
at org.hibernate.type.descriptor.converter.AttributeConverterSqlTypeDescriptorAdapter$1.bind(AttributeConverterSqlTypeDescriptorAdapter.java:78)
... 78 common frames omitted

那么到底出了什么问题呢?

最佳答案

终于解决了这个问题。我这样更改代码:

entity:
@Convert(converter = ListExtendConverterJson.class)
private Long[] receivers;
<小时/>
public class ListExtendConverterJson implements AttributeConverter<Long[], String> {

@Override
public String convertToDatabaseColumn(Long[] list) {
String result = JSONArray.toJSONString(list);
return result;
}

@Override
public Long[] convertToEntityAttribute(String s) {
List<Long> list = JSONArray.parseArray(s, Long.class);
Long[] result = new Long[list == null ? 0 :list.size()];
if(!CollectionUtils.isEmpty(list)) {
int i = 0;
for(Long l : list) {
result[i] = l;
i ++;
}
}
return result;
}

将List集合改为Array,这样就可以正常工作了!

关于mysql - Spring data JPA中将java bean的List<Long>转换为mysql的json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45626701/

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