Пустое значение ModelMapper в свойстве бина - PullRequest
0 голосов
/ 13 февраля 2020

Я пытаюсь сопоставить одно поле java .util.Date (объект JPA) с другим объектом 'X', который имеет объект POJO Bean DateBean, но однажды получил объект JPA, только свойство 'date' объекта bean DateBean был картой. Код очень прост, но я не знаю, что не так.

Если я запусту небольшой пример этого конвертера в JUnit Test, все окончательные свойства bean-компонентов оценятся.

public class DateToDateBeanConverter extends AbstractConverter<Date, DateBeanDto> {

public String datePattern;

@Override
protected DateBeanDto convert(Date source) {
    DateBeanDto result = new DateBeanDto();
    SimpleDateFormat sdf = new SimpleDateFormat(datePattern);
    result.setDateString(sdf.format(source));
    result.setDate(source);
    return source == null ? null : result;
}

public DateToDateBeanConverter(String datePattern) {
    this.datePattern = datePattern;
}

Это JPA-объект:

@Entity
@Table(name = "contracts")
@NamedQuery(name = "Contract.findAll", query = "SELECT c FROM Contract c")
@Data
@NoArgsConstructor
@DynamicUpdate
public class Contract implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @Column(name = "cd_contract")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long cdContract;

    @ManyToOne
    @JoinColumn(name = "cd_contract_type")
    private ContractTypes contractType;

    @Column(name = "start_date")
    @Type(type="date")
    private Date startDate;

    @Column(name = "end_date")
    @Type(type="date")
    private Date endDate;    

    @Column(name = "working_type")
    private String workingType;

    @ManyToOne
    @JoinColumn(name = "cd_employee")
    private Employee employee;

}

Это DTO-компонент и DateBean:

@Data
@AllArgsConstructor
@NoArgsConstructor
public class DateBeanDto implements Serializable {
    private static final long serialVersionUID = 1L;

    private String dateString;

    private Date date;

}

@Data
@AllArgsConstructor
@NoArgsConstructor
public class ContractDto implements Serializable {
    private static final long serialVersionUID = 1L;

    private Long cdContract;

    private ContractTypesDto contractType;

    private DateBeanDto startDate;

    private DateBeanDto endDate;    

    private String workingType;

    private EmployeeDto employee;

}
...