Syntax:
List contains a 'Equipamento'; 'Equipamento' contains:
- List seguros,
- List ipos,
- List tacografos,
- List DLs,
- List lavagens;
I need to limit the joins, for example: " select top (5) * from lavagens "
Any other ideas?
Entity Registo
Class Registo
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private Integer id;
@ManyToOne(fetch = FetchType.EAGER, optional = false)
@JoinColumn(name = "Num_Equipamento")
private Equipamento equipamento;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "Registo_ID")
private List<Seguro> seguros;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "Registo_ID")
private List<IPO> ipos;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "Registo_ID")
private List<Tacografo> tacografos;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "Registo_ID")
private List<DL> DLs;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "Registo_ID")
private List<Lavagem> lavagens;
(...)
// gets/sets
Class RegistoDAO
public List<Registo> listarTodosParam(){
(...)
TypedQuery<Registo> query = em.createQuery("SELECT DISTINCT reg from Registo reg " +
" LEFT JOIN reg.equipamento equi " +
" LEFT JOIN reg.seguros seg " +
" LEFT JOIN reg.ipos ipo " +
" LEFT JOIN reg.tacografos tac " +
" LEFT JOIN reg.DLs dl " +
" LEFT JOIN reg.lavagens lav ", Registo.class);
(...)
}