我正在开发 Spring Boot Rest Api。我有一个名为“Wypozyczenie”的课程,还有一个名为“WypozyczenieDTO”的课程。我想从 Wypozyczenie 类中提取一些信息(避免嵌套对象)并根据来自 WypozyczenieDTO 的信息返回数据。我试过 DozerBeanMapper 和 ModelMapper 都没有正确转换我的对象。所有的值都是空或零!我正在调试,并且在应该进行转换的线路上它不起作用。这是发生转换的函数:
private WypozyczenieDto convertToDto(Wypozyczenie wypozyczenie) {
WypozyczenieDto wypozyczenieDto = mDozerBeanMapper.map(wypozyczenie, WypozyczenieDto.class);
return wypozyczenieDto;
}
我正在调试并且 wypozyczenieDto 中的所有参数都是空或零。
以下是 Wypozyczenie 和 WypozyczenieDto 类(没有 getter 和 setter):
public class WypozyczenieDto {
private Long id;
@JsonProperty("planowana_data_rozpoczecia")
private LocalDateTime planowanaDataRozpoczecia;
@JsonProperty("planowana_data_zakonczenia")
private LocalDateTime planowanaDataZakonczenia;
@JsonProperty("faktyczna_data_rozpoczecia")
private LocalDateTime faktycznaDataRozpoczecia;
@JsonProperty("faktyczna_data_zakonczenia")
private LocalDateTime faktycznaDataZakonczenia;
@JsonProperty("przebieg_rozpoczecia")
private int przebiegRozpoczecia;
@JsonProperty("przebieg_zakonczenia")
private int przebiegZakonczenia;
@JsonProperty("id_pracownika")
private Long idPracownika;
@JsonProperty("id_pojazdu")
private Long idPojazdu;
@JsonProperty("status_wypozyczenia")
private Wypozyczenie.statusyWypozyczenia statusWypozyczenia;
这是 Wypozyczenie 类:
@Entity
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
public class Wypozyczenie {
//ENUM Type of statusyWypozyczenia
public enum statusyWypozyczenia{
ZAREZERWOWANE, WYPOZYCZONE, ZAKONCZONE;
public static final EnumSet<statusyWypozyczenia> allStatusyWypozyczenia = EnumSet.allOf(statusyWypozyczenia.class);
}
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(columnDefinition = "datetime2")
@JsonProperty("planowana_data_rozpoczecia")
private LocalDateTime planowanaDataRozpoczecia;
@Column(columnDefinition = "datetime2")
@JsonProperty("planowana_data_zakonczenia")
private LocalDateTime planowanaDataZakonczenia;
@Column(columnDefinition = "datetime2")
@JsonProperty("faktyczna_data_rozpoczecia")
private LocalDateTime faktycznaDataRozpoczecia;
@Column(columnDefinition = "datetime2")
@JsonProperty("faktyczna_data_zakonczenia")
private LocalDateTime faktycznaDataZakonczenia;
@JsonProperty("przebieg_rozpoczecia")
private int przebiegRozpoczecia;
@JsonProperty("przebieg_zakonczenia")
private int przebiegZakonczenia;
@ManyToOne(fetch=FetchType.LAZY)
@JsonManagedReference
private Pracownik pracownik;
@ManyToOne(fetch=FetchType.LAZY)
@JsonManagedReference
private Pojazd pojazd;
@Enumerated
@Column(columnDefinition = "smallint")
@JsonProperty("status_wypozyczenia")
private statusyWypozyczenia statusWypozyczenia;
@OneToMany(mappedBy = "wypozyczenie")
@JsonBackReference
private List<CzynnoscSerwisowa> czynnosciSerwisowe;
@OneToMany(mappedBy = "wypozyczenie")
@JsonBackReference
private List<CzynnoscEksploatacyjna> czynnosciEksploatacyjne;
这是主应用程序的主要内容,您可以看到我如何初始化 bean:
@Configuration
@EnableAutoConfiguration
@ComponentScan
public class ApiBdCarRentApplication {
@Bean
public DozerBeanMapper mDozerBeanMapper() {
return new DozerBeanMapper();
}
@Bean
public ModelMapper modelMapper() {
return new ModelMapper();
}
public static void main(String[] args) {
System.out.println(Integer.getInteger("4"));
SpringApplication.run(ApiBdCarRentApplication.class, args);
}
}
这是 Wypozyczenia 类的控制器:
@RequestMapping("/wypozyczenia")
@RestController
public class WypozyczenieController {
private WypozyczenieService mWypozyczenieService;
private DozerBeanMapper mDozerBeanMapper;
@Autowired
public WypozyczenieController(WypozyczenieService wypozyczenieService, DozerBeanMapper dozerBeanMapper) {
mWypozyczenieService = wypozyczenieService;
mDozerBeanMapper = dozerBeanMapper;
}
@GetMapping("")
public List<WypozyczenieDto> getAllWypozyczenia(){
List<Wypozyczenie> wypozyczenia = mWypozyczenieService.getAllWypozyczenia();
return wypozyczenia.stream()
.map(wypozyczenie -> convertToDto(wypozyczenie))
.collect(Collectors.toList());
}
private WypozyczenieDto convertToDto(Wypozyczenie wypozyczenie) {
WypozyczenieDto wypozyczenieDto = mDozerBeanMapper.map(wypozyczenie, WypozyczenieDto.class);
return wypozyczenieDto;
}
请帮我。到底是怎么回事?为什么即使在简单的转换级别上也不起作用(我已经在其他类上尝试过)。