У меня есть поле с именем 'значение', которое имеет тип MEDIUMTEXT в MySQL db. Когда я пытаюсь сохранить или получить модель, отображается Could not commit JPA transaction; nested exception is javax.persistence.RollbackException: Error while committing the transaction
Модель
@Entity
@Table(name = "xyz_something")
@JsonIgnoreProperties(ignoreUnknown = true)
public class Xyz {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@NotBlank(message = "key is mandatory")
@Column(columnDefinition = "CHAR")
@Type(type = "org.hibernate.type.CharArrayType")
private char[] key;
@Column(columnDefinition = "MEDIUMTEXT")
@Type(type = "org.hibernate.type.TextType")
private String value;
// Getters and Setters
Репозиторий
public interface XyzRepository extends JpaRepository<Xyz, Integer> {
}
Контроллер
@RestController()
@RequestMapping("api/v1")
public class XyzController {
private static Logger logger = LogManager.getLogger();
@Autowired
XyzRepository xyzRepository;
@PutMapping("/xyz")
public HttpStatus insertValue(@RequestHeader(value="id") int id, @NotBlank @RequestBody String value) {
return upsert(value,id);
return HttpStatus.BAD_REQUEST;
}
private HttpStatus upsert(String value, int id) {
return xyzRepository.findById(id)
.map(xyz -> {
xyz
.setKey("key")
.setValue(value);
xyzRepository.save(xyz);
return HttpStatus.CREATED;
}).orElseGet(() -> {
Xyz xyz = new Xyz();
xyz
.setId(id)
.setKey("key")
.setValue(value)
xyzRepository.save(xyz);
return HttpStatus.CREATED;
});
}
}
Если я закомментирую строку 'setValue (value)', она сработает, иначе я получу ошибку, упомянутую выше. Я пробовал использовать @Lob с columnDefinition = "MEDIUMTEXT". Кроме того, я попытался указать длину в @Column, что тоже не работает. Что я делаю не так? Заранее спасибо.