[quote=Roselito Fávero da Silva]Parente,
Posso te ajudar a fazer a classe Comparator, que é bem simples. Quais os tipos dos objetos e quais os atributos deles que tem que ser comparados?[/quote]
Bom dia cara, tdo certo? Bem, estou fazendo o relatório apartir da classe Nota e preciso comparar ( no caso pretendo ordenar ) apartir da minha classe Grade. Abaixo minha classe Nota:
@Table(name = "EDU_NOTAS")
public class Nota implements Serializable, Auditable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "gen_nota")
@SequenceGenerator(name = "gen_nota", sequenceName = "GEN_NOTA", allocationSize = 1, initialValue = 1)
@Column(name = "NOT_CODIGO")
private Integer codigo;
@Column(name = "NOT_ANO")
private Integer ano;
@Column(name = "NOT_PERIODO")
private Integer periodo;
@Column(name = "NOT_NOTA")
private BigDecimal nota;
@Column(name = "NOT_PERCFALTAS")
private BigDecimal percFaltas;
@Column(name = "NOT_NOTAPARCIAL")
private BigDecimal notaParcial;
@Column(name = "NOT_CONCEITO")
private String conceito;
@Column(name = "NOT_NROFALTAS")
private Integer nroFaltas;
// @Column(name = "NOT_NROAULAS")
// private Integer nroAulas;
@Column(name = "NOT_NOTAREC")
private BigDecimal notaRecuperacao;
@JoinColumn(name = "NOT_CODMATRICULA", referencedColumnName = "MAT_CODIGO")
@ManyToOne
private Matricula matriculas;
@JoinColumn(name = "NOT_CODDISCIPLINA", referencedColumnName = "DIS_CODIGO")
@ManyToOne
private Disciplina disciplina;
@JoinColumn(name = "NOT_CODALUNO", referencedColumnName = "ALU_CODIGO")
@ManyToOne
private Aluno aluno;
@JoinColumn(name = "NOT_CODESCOLA", referencedColumnName = "ESC_CODIGO")
@ManyToOne
private Escola escola;
@JoinColumn(name = "NOT_CODTURMA", referencedColumnName = "TUR_CODIGO")
@ManyToOne
private Turma turma;
@JoinColumn(name = "NOT_CODETAPA", referencedColumnName = "ETA_CODIGO")
@ManyToOne
private Etapa etapa;
@JoinColumn(name = "NOT_CODAVALICAO", referencedColumnName = "AVA_CODIGO")
@ManyToOne
private Avaliacoes avaliacoes;
@JoinColumn(name = "NOT_CODPARECER", referencedColumnName = "PAR_CODIGO")
@ManyToOne
private Parecer codParecer;
@Column(name = "NOT_STATUS")
private String status;
@Column(name = "NOT_PARECER")
private String parecer;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "nota")
private Collection<AvaliacaoObjetiva> avaliacaoObjetiva;
// getters e setter
Para chegar na classe da grade vou através da disciplina…
@Entity
@Table(name = "EDU_DISCIPLINAS")
public class Disciplina implements Serializable, Auditable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "gen_disciplinas")
@SequenceGenerator(name = "gen_disciplina", sequenceName = "GEN_DISCIPLINAS",
allocationSize = 1, initialValue = 1)
@Column(name = "DIS_CODIGO")
private Integer codigo;
@Column(name = "DIS_DESCRICAO")
private String descricao;
@Column(name = "DIS_ABREVIATURA")
private String abreviatura;
@JoinColumn(name = "DIS_CODAREA", referencedColumnName = "ARE_CODIGO")
@ManyToOne
private AreaDisciplina areaDisciplina;
@JoinColumn(name = "DIS_CODDISMEC", referencedColumnName = "DISC_CODIGO")
@ManyToOne
private DisciplinasMec disciplinasMec;
@OneToMany(mappedBy = "avaCoddisciplina")
private Collection<Avaliacoes> eduAvaliacoesCollection;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "disciplina")
@OrderBy("ordem ASC") // Ordena a coleção pela ordem
private Collection<Grade> gradeCollection;
Deu pra entender +/- ?? Nunca fui mto bom com explicações…Mas posso melhorar se necessário… No caso, se eu fosse para o relatório, passaria por parâmetro da seguinte maneira: //parametros.put(“gradeCollection”, etapa.getGradeCollection());
A minha classe grade é o seguinte:
@Table(name = "EDU_GRADE")
public class Grade implements Serializable, Auditable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "gen_grade")
@SequenceGenerator(name = "gen_grade", sequenceName = "GEN_GRADE", allocationSize = 1, initialValue = 1)
@Column(name = "GRA_CODIGO")
private Integer codigo;
@Column(name = "GRA_QTPERIODOS")
private Integer qntPeriodos;
@Column(name = "GRA_CARGAHOR")
private Integer cargaHoraria;
@Column(name = "GRA_ORDEM")
private Integer ordem;
@JoinColumn(name = "GRA_CODETAPA", referencedColumnName = "ETA_CODIGO")
@ManyToOne
private Etapa etapa;
@JoinColumn(name = "GRA_CODDISC", referencedColumnName = "DIS_CODIGO")
@ManyToOne
private Disciplina disciplina;
No caso, resumindo: tenho que ordenar as disciplinas que aparecerão no relatório de boletim apartir de uma lista de notas pela ORDEM DAS DISCIPLINAS que estão na Etapa daquela Grade…Se puder ajudar, agradeço muito cara, de fé mesmo. Vlw