Я пытаюсь сопоставить одно поле 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;
}