Возврат метода save() репозитория JPA возвращает классы композиции как null [закрыто]JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Возврат метода save() репозитория JPA возвращает классы композиции как null [закрыто]

Сообщение Anonymous »

Я создал следующую сущность и DTO:

Код: Выделить всё

@Entity
@AllArgsConstructor
@NoArgsConstructor
@Data
public class Lancamento {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;

@NotBlank
@NotNull
@Column(length = 10)
private String data;

@Positive
@Column(nullable = false, columnDefinition = "DECIMAL(10, 2)")
private double valor;

@NotBlank
@NotNull
@Column(length = 100)
private String descricao;

@ManyToOne
@JoinColumn(name = "categoria_id")
private Categoria categoria;

@ManyToOne
@JoinColumn(name = "cartao_id")
private Cartao cartao;
}

Код: Выделить всё

`public record LancamentoDTO( @Id Long id,
@NotBlank @NotNull String data,
@NotBlank @NotNull String descricao,
@Positive double valor,
CategoriaDTO categoria,
CartaoDTO cartao) {}`
Это сервисный класс, который вызывает метод save() репозитория:

Код: Выделить всё

@Service
public class LancamentoService {

private final LancamentoRepository lancamentoRepository;
private final LancamentoMapper mapper;

public LancamentoService(LancamentoRepository lancamentoRepository, LancamentoMapper mapper) {
this.lancamentoRepository = lancamentoRepository;
this.mapper = mapper;
}

public LancamentoDTO incluirLancamento(LancamentoDTO lancamento) {
return  mapper.toDTO(lancamentoRepository.save(mapper.toEntity(lancamento)));
}
Картограф был построен следующим образом:

Код: Выделить всё

@Component
public class LancamentoMapper {

public LancamentoDTO toDTO(Lancamento lancamento) {
if (lancamento == null) {
return null;
}

return new LancamentoDTO(lancamento.getId(),
lancamento.getData(),
lancamento.getDescricao(),
lancamento.getValor(),
CategoriaMapper.toDTO(lancamento.getCategoria()),
CartaoMapper.toDTO(lancamento.getCartao()));
}

public Lancamento toEntity(LancamentoDTO lancamentoDTO) {

if (lancamentoDTO == null) {
return null;
}

Lancamento lancamento = new Lancamento();
if (lancamentoDTO.id() != null) {
lancamento.setId(lancamentoDTO.id());
}

lancamento.setData(lancamentoDTO.data());
lancamento.setDescricao(lancamentoDTO.descricao());
lancamento.setValor(lancamentoDTO.valor());
lancamento.setCategoria(CategoriaMapper.toEntity(lancamentoDTO.categoria()));
lancamento.setCartao(CartaoMapper.toEntity(lancamentoDTO.cartao()));

return lancamento;
}

}
Для запроса я использую следующий JSON:

Код: Выделить всё

{
"data": "19/07/2024",
"valor": "150",
"descricao": "Abastecimento",
"categoria": {"type": "despesa",
"id": "1"},
"cartao": { "id": "1" }
}
Прежде чем отправить запрос на создание нового выпуска, я создаю новую категорию и новую карточку и связываю их с запросом. Однако в возвращаемом JSON классы композиции (категория и карточка) возвращаются со значением null:

Код: Выделить всё

{
"id": 2,
"data": "19/07/2024",
"descricao": "Abastecimento",
"valor": 150.0,
"categoria": {
"type": "despesa",
"id": 1,
"nome": null,
"meta": 0.0
},
"cartao": {
"id": 1,
"nome": null
}
}
Как заставить классы композиции возвращать данные?

Подробнее здесь: https://stackoverflow.com/questions/787 ... 3%a3o-como
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»