Spring boot 3.0.4:当我使用不可变对象从数据库中检索时,实体填充不起作用

问题描述 投票:0回答:0

我想在使用不可变对象将实体保存在数据库中后检索它,没有 getters 没有 setters

环境

春季启动 3.0.4.

Java 17

Postgres 15

我尝试设置一个不变的实体

实体

@Entity
@Table(name = "competence")
public class Competence {
private final Long id;
private fina String name;
private final LocalDatetime createdAt

Competence(Long id, String name, LocalDateTime cretedAt){
  this.id = id;
  this.name = name;
  this.createdAt = createdAt;

 }

static Competence of (Long id, String name, LocalDateTime cretedAt){
   return new Competence(id, name, createdAt);
 }

    public static Competence withName(String name) {
        return new CompetenceType(
                null,
                name,
                LocalDateTime.now());
    }
}

存储库

public interface CompetenceRepository extends JpaRepository<Competence,Long> {
}

控制器

@RestController
@RequestMapping("/api/v1/competence")
public class CompetenceTypeResource {


    private CompetenceRepository competenceRepository;

    @Autowired
    public CompetenceTypeResource(CompetenceRepository competenceRepository) {
        this.competenceRepository = competenceRepository;
    }


    @PostMapping
    public CompetenceType createcompetence(@RequestBody CompetenceTypeDTO competence) {
        CompetenceType competenceType = CompetenceType.withName(competence.name());

        return this.competenceTypeRepository.save(competenceType);
    }
}

我期待一个 Json 响应与创建的新实体,但我得到的只是一个空的 Json

{}

我需要写 getter 和 setter 吗?

有没有办法在 JPA 中填充不可变对象?

有没有办法在没有 getter 和 setter 的情况下填充实体?

spring-boot jpa spring-data-jpa spring-3 java-17
© www.soinside.com 2019 - 2024. All rights reserved.