Eu faço um microsserviço no controlador, meus valores necessários vêm da resposta, mas não são mostrados no carteiro, mas eu posto o homem, recebo a seguinte resposta
@RestController @RequestMapping("/aluguel") public class AluguelController {
@Autowired
Aluguer de serviços privados Aluguer de serviços;
@GetMapping("/{id}")
public ResponseEntity getRental(@PathVariable("id") Long id){ Aluguel rl = rentalService.findRentalById(id); return ResponseEntity.ok(rl); }
@GetMapping("/viewAll")
public List getAllRental(){ List ls = rentalService.viewAllRental(); retornar ls; }
}
@Service public class RentalService {
@Autowired
privado RentalRepository rentalRepository;
@Autowired
privado RentalTypeRepository rentalTypeRepository;
@Autowired
privado SizeTypeRepository sizeTypeRepository; @Autowired private SleepingArrangementRepository sleepArrangementRepository;
public Aluguel save(Aluguel rt) { return rentalRepository.save(rt); }
public Rental findRentalById(Long id) { return rentalRepository.findAllByRentalId(id); }
public List viewAllRental(){ List lsRental= new ArrayList(); lsRental = rentalRepository.findAll();
retornar lsAluguer; }
public List viewAllRentalType(){ List lsRental= new ArrayList(); lsRental = rentalTypeRepository.findAll(); retornar lsAluguer; }
public List viewAllSizeType(){ List lsSizeType= new ArrayList(); lsSizeType = sizeTypeRepository.findAll(); return lsSizeType; }
}
@Repository public interface RentalRepository extends JpaRepository<Rental, Long> {
public Rental findAllByRentalId(Long id);
}
@Entity @Getter @Setter @AllArgsConstructor @NoArgsConstructor @Table(name="aluguel",schema="bnb_pms") public class Aluguel {
@Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name="RENTAL_ID")
rentalId longo privado;
@Column(name="RENTAL_NAME")
private String rentalName;
@Column(name="INTERNAL_NAME")
private String nome_interno;
@Column(name="DES")
string des privada;
@ManyToOne(cascade = { CascadeType.MERGE, CascadeType.PERSIST }) @JoinColumn(name="TYPE_ID")
tipo de aluguel privado tipo de aluguel;
@Column(name="RENTAL_SIZE")
private int rentalSize;
@Column(name="GUEST_ACCOMODATE")
private int guestAccomodate;
@Column(name="TOTAL_UNITS")
private int totalUnits;
}
@Entity @NoArgsConstructor @AllArgsConstructor @Table(name="rental_type",schema="bnb_pms") public class RentalType {
@Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name="TYPE_ID")
typeId longo privado;
@Column(name="TYPE_NAME")
string privada typeName;
}
Em resposta, obtenho o valor do tipo de aluguel conforme mostrado na figura, imagem do depurador
mas no tipo de aluguel do carteiro o objeto não é mostrado. A resposta do carteiro é a seguinte,
{ "rentalId": 453, "rentalName": "Ehsan ulhaq Darrr1659", "internalName": "Khadim Hussain Dar", "des": "[email protected]", "rentalType": {}, "rentalSize": 2, "guestAccomodate": 4, "totalUnits": 3 }
Esse problema tem a ver com a serialização de seus objetos java (via Jackson) para JSON, não JPA ou os mapeamentos. Se você olhar o que é serializado:
Você pode dizer que há um objeto sendo serializado, ele simplesmente não possui nenhum atributo ou dado. Isso ocorre porque Jackson usará o acesso de propriedade por padrão.
Se você verificar as definições da sua entidade, aquela que possui dados, a Rental possui:
Enquanto a classe RentalType está apenas usando:
Se você adicionar os getters e setters, Jackson poderá ver as propriedades e incluí-las no objeto JSON.