Boa tarde galera,
Estou com problemas de N+1 e estou tentando resolve-lo com join fetch, porém quando tenho mais de um relacionamento venho tendo problemas…
Minhas tabelas são da seguinte forma:
Visita AS visi
-visi.visi_id
-visi.vis_id
Visitante AS vis
-vis.vis_id
-vis.cid_id
Cidade AS cid
-cid.cid_id
-cid.est_id
Estado AS est
-est.est_id
Acho que deu pra entender como estão minhas tabelas…
O que eu tentei foi o seguinte:
O erro que eu obtive foi:
Como eu faria o join fetch com mais de um relacionamento e não ter n+1 querys?
Obrigado desde já!
Abraço!
Mapeamentos:
Visita:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "visi_id")
private long visi_id;
@ManyToOne
@JoinColumn(name="vis_id", nullable = false)
private Visitante vis_id;
@Column(name = "visi_entrada", columnDefinition = "DATETIME", nullable=false)
@Temporal(TemporalType.TIMESTAMP)
private Date visi_entrada;
@Column(name = "visi_saida", columnDefinition = "DATETIME", nullable=true)
@Temporal(TemporalType.TIMESTAMP)
private Date visi_saida;
@Column(name = "visi_motivo")
private String visi_motivo;
Visitante:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "vis_id")
private long vis_id;
@Column(name = "vis_nome", nullable = false)
private String vis_nome;
@Column(name = "vis_digital", columnDefinition = "LONGBLOB")
@Basic(fetch = FetchType.LAZY)
private byte[] vis_digital;
@Column(name = "vis_empresa")
private String vis_empresa;
@Column(name = "vis_empresacnpj")
private String vis_empresacnpj;
@ManyToOne
@JoinColumn(name = "cid_id")
private Cidade cid_id;
Cidade:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "cid_id")
private long cid_id;
@Column(name = "cid_nome", nullable=false)
private String cid_nome;
@JoinColumn(name="est_id", nullable = false)
@ManyToOne(cascade=CascadeType.PERSIST)
private Estado est_id;
Estado:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "est_id")
private long est_id;
@Column(name = "est_nome", nullable=false)
private String est_nome;
@Column(name = "est_sigla", unique=true, nullable=false)
private String est_sigla;