java 如何修复错误500在 Postman 从一个职位的要求?

dl5txlt9  于 2023-01-01  发布在  Java
关注(0)|答案(2)|浏览(139)

我想知道是否有人得到了关于这个错误的见解,我从下面的 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.

要问,我应该在实体中声明什么数据类型才能解决这个问题?

bwntbbo3

bwntbbo31#

理想情况下,您应该只保存路径到您的图像在您的数据库中,在您上传文件到一个单独的图像存储。
使图像类型为String。

ijnw1ujt

ijnw1ujt2#

我通常将图像保存为文件,并将细节保存在DB中。但是,如果您仍然希望将其保存在DB中,则可以进行以下更改:

@Lob
@Column(name = "image")
private byte[] image;

相关问题