平常我们工作中基本最多两级嵌套,但是有时候难免会遇到三级嵌套的业务场景,笔者最近就碰到了,使用一般的嵌套发现赋值为空,这可难倒了菜逼的我,后来在stackoverflow的帮助下终于搜到了解决办法,完美解决了问题 ,总结一下,方便有需要的同学,下面直接上栗子:
首先上实体类:三级嵌套如下 (电站 -----> 电桩 ---->电枪)
电站实体类 (实体为JPA写法,不影响mybatis的使用)
package com.weima.cecapp.entities;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.BatchSize;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.util.Collections;
import java.util.List;
import java.util.Set;
@NoArgsConstructor
@Data
@Entity
@Table(name = "station_info")
public class StationInfo {
/**
* Auto-generated primary key.
*/
@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "org.hibernate.id.UUIDGenerator")
@Column(unique = true, nullable = false, updatable = false)
private String id;
@Column(name = "station_id")
private String stationId;
@Column(name = "operator_id")
private String operatorId;
@Column(name = "equipment_owner_id")
private String equipmentOwnerId;
@Column
private String stationName;
@Column
private String countryCode;
@Column
private String areaCode;
@Column
private String address;
@Column
private String stationTel;
@Column
private String serviceTel;
@Column
private Integer stationType;
@Column
private Integer stationStatus;
@Column
private Integer parkNums;
@Column
private Double stationLng;
@Column
private Double stationLat;
@Column
private String siteGuide;
@Column
private Integer construction;
@OneToMany(fetch = FetchType.LAZY, cascade = {
CascadeType.ALL}, orphanRemoval = true, mappedBy = "ownerStationInfo")
private List<StationPicture> pictures;
@Column
private String matchCars;
@Column
private String parkInfo;
@Column
private String busineHours;
@Column(name = "busine_hours_in_milliseconds")
private Long busineHoursInMilliseconds;
@Column
private String electricityFee;
@Column
private String serviceFee;
@Column
private String parkFee;
@Column
private String payment;
@Column
private Integer supportOrder;
@Column
private String remark;
@OneToMany(fetch = FetchType.LAZY, cascade = {
CascadeType.ALL}, orphanRemoval = true, mappedBy = "ownerStationInfo")
@BatchSize(size = 20)
private List<EquipmentInfo> equipmentInfos;
}
电站图片实体
package com.weima.cecapp.entities;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
@Data
@Entity
@EqualsAndHashCode(of = {
"url"})
@T