【问题标题】:Avoidy Lazy Initialization except in dozer mapping for null collections避免延迟初始化,除了空集合的推土机映射
【发布时间】:2016-12-05 09:06:04
【问题描述】:
@Override
RegistrationDto isCandidateUnfit(RegistrationDto dto) {
    Long nationId = 0L;
    if(dto.getNationMast() != null){
        nationId = dto.getNationMast().getNationId();
    }
    Registration reg = registrationRepo.findCandidateMedicalStatus(dto.getPassportNo(),nationId,
                    dto.getCivilId(), ServiceConstants.CANDIDATE_MED_STATUS_UNFIT_ID); 

    return getMapper().map(reg, RegistrationDto.class) ;
}

如果一个 caollection(appointments) 为 null,则在映射 dozer 映射时,它会抛出异常未能延迟初始化角色集合:om.gov.moh.model.cdc.Registration.appointments

不能从 Lazy 变为 Eager

//RegistrationDto


@SuppressWarnings("serial")
public class RegistrationDto extends SearchDto implements java.io.Serializable {

// Fields

private Long regId; 

@JsonIgnore
private Set<AppointmentDto> appointments = new HashSet<>(0);
private String orderStatus;


/** setters & getters **/

}

【问题讨论】:

标签: spring spring-mvc dozer


【解决方案1】:

您可以创建自定义转换器,如 here 所示。

创建一个自定义转换器,当您有一个未初始化的集合时,只需将其设置为 null 或空。您可以使用 Hibernate.isInitialized(Object proxy) 进行检查。参考here

【讨论】:

    猜你喜欢
    • 2020-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多