【发布时间】:2017-07-07 13:52:30
【问题描述】:
我正在尝试将 Java 数组列表写入 postgres 数据库。但我做不到,我也不会出错。我正在尝试发布数据
"skill":["java,dotnet"]
使用邮递员工具,但在 Post 上没有任何反应,我在 db 中看不到任何数据。我的控制台中也没有任何错误。请帮我解决这个问题,我想知道该怎么做
我可以从数据库中读取数组数据但不能写入
/*
* Spring Entity:
*/
@Column(name="skill" , columnDefinition = "text[]")
@Convert(converter =ListToStringConverter.class)
private List<String> skill=new ArrayList<>();
ublic List<String> getSkill() {
return skill;
}
public void setSkill(List<String> skill) {
this.skill= skill;
}
@Converter
public class ListToStringConverter implements AttributeConverter<List<String>, String> {
@Override
public String convertToDatabaseColumn(List<String> attribute) {
if (attribute == null || attribute.isEmpty()) {
return "";
}
return StringUtils.join(attribute, ",");
}
@Override
public List<String> convertToEntityAttribute(String dbData) {
if (dbData == null || dbData.trim().length() == 0) {
return new ArrayList<String>();
}
String[] data = dbData.split(",");
return Arrays.asList(data);
}
}
Controller Code:
这是我在数据库中创建对象的控制器代码,我使用从控制器调用的接口服务保存到作为 JPA 存储库的 db-Postgres
@RequestMapping(value = "/reqCreate", method = RequestMethod.POST)
public ResponseEntity<Requirement> addRequirement(@RequestBody Requirement requirement) {
reqService.save(requirement);
return new ResponseEntity<Requirement>(requirement, HttpStatus.CREATED);
}
Service:
public void save(Requirement r) {
reqRepo.save(r);
}
【问题讨论】:
-
您好,欢迎来到 SO!您向我们展示了如何处理
List和String之间的数据转换。但是您如何实际访问数据库?请编辑您的问题并将该代码添加到其中。您有任何错误消息或异常吗? -
没有
columnDefinition = "text[]"也能用吗? -
想知道您的 TABLE 模式是否是使用
text[]类型的列创建的? -
嗨 Lupz,我收到以下错误代码:错误:列“技能”的类型为 text[],但表达式的类型为字符变化提示:您需要重写或强制转换表达式。跨度>
-
@Carrie 你能找到解决方案吗?我面临同样的问题,不知道如何解决。
标签: java spring postgresql jpa