我想知道是否有人得到了关于这个错误的见解,我从下面的 Postman :
{
"timestamp": "2022-12-29T07:59:00.313+0000",
"status": 500,
"error": "Internal Server Error",
"message": "could not execute statement; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not execute statement",
"path": "/v1/personal/add"
}
下面是我的控制器类:
PersonalController.java
@PostMapping("/add")
public ResponseEntity <PersonalResponseDto> addPersonalInfo (@RequestBody final PersonalRequestDetailsDto personalRequestDetailsDto){
PersonalResponseDto dto = personalService.addPersonalInformation(personalRequestDetailsDto);
return ResponseEntity.ok(dto);
}
以下是我的服务类:
PersonalService.java
public PersonalResponseDto addPersonalInformation(PersonalRequestDetailsDto personalRequestDetailsDto){
PersonalEntity personalEntity = personalMapper.toEntity(personalRequestDetailsDto);
PersonalEntity saveInfo = personalRepository.save(personalEntity);
return personalMapper.toDto(saveInfo);
}
这是我的Entity类:
@Data
@ComponentScan("personal")
@NoArgsConstructor
@Table(name = "student_personal_information")
@Entity
public class PersonalEntity {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "id", nullable = false)
private Long id;
@Column(name = "lastname", columnDefinition = "CLOB")
private String lastname;
@Column(name = "firstname", columnDefinition = "CLOB")
private String firstname;
@Column(name = "middleinitial")
private String middleinitial;
@Column(name = "age")
private Integer age;
@Column(name = "image")
private Byte image;
}
我会很感激任何帮助,为什么我得到上面的错误 Postman 。
谢谢你。
我想添加一个信息,将存储到数据库,但我得到一个错误。
以下是我的请求DTO:
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PersonalRequestDetailsDto implements Serializable {
private static final long serialVersionUID = -7175623352146349491L;
@NotEmpty
private String lastname;
@NotNull
private String firstname;
@NotEmpty
private String middleinitial;
@NotNull
private Integer age;
}
补充:根据一位评论者的建议,我了解到这里的主要问题是我在列图像下的实体。
下面是我得到的错误:
column "image" is of type bytea but expression is of type smallint Hint: You will need to rewrite or cast the expression.
要问,我应该在实体中声明什么数据类型才能解决这个问题?
2条答案
按热度按时间bwntbbo31#
理想情况下,您应该只保存路径到您的图像在您的数据库中,在您上传文件到一个单独的图像存储。
使图像类型为String。
ijnw1ujt2#
我通常将图像保存为文件,并将细节保存在DB中。但是,如果您仍然希望将其保存在DB中,则可以进行以下更改: