Problema com Ordenação utilizando 3 camadas

Olá pessoal, to fazendo um Jogo de Dados, antes eu tinha feito ele sem utilizar 3 camadas e sem gravar em um banco de dados. Agora estou guardando no banco de dados e utilizando o modelo 3 camadas. Antes eu tinha uma classe jogador que tinha o DADO1 e o DADO2, ou seja, era atributo de jogador. Mas ai montei o banco, e fiz as tabelas, mas eu to fazendo da seguinte maneira(e nao posso mudar):

Jogo Jogador Jogada

O meu problema é o seguinte: Eu preciso mostrar os jogadores na tela, todos ordenados em forma decrescente, ex:

[code]Jogadores Lancamento1 Lancamento 2 ResultadoFinal

Renato 3 6 2 5 16.11
Alan 2 4 1 3 10.7
[/code]
Bom, o que eu faço é o seguinte: Eu somo o valor de todos os dados e depois somo todos os valores do dado2 do jogador e adiciono como casa decimal, até ai ok.

Mas agora que fiz em 3 camadas, eu tenho a classe Jogada seperada de Jogador, oou seja, dado1 e dado2, já não é mais um atributo de Jogador e sim de Jogada. O meu problema é que eu adiciono na sequencia, os jogadores e suas respectivas jogadas, mas depois eu ordeno a classe jogador de acordo com o valor total dos jogadores. Ai os jogadores mudam de posição e as jogadas permanecem como estavam, ai quando vou mostrar na tela, mostra os valores dos dados diferente do resultado total do jogador. Entendem?

Olhem minhas classes:

pacote bean

package bean;

import java.util.ArrayList;

/**
 *
 * @author MaYcKoN
 */
public class Jogada {
    private int id;
    private ArrayList<Integer> dado1 = new ArrayList<Integer>();
    private ArrayList<Integer> dado2 = new ArrayList<Integer>();
    private Integer Jogador_id;
    public ArrayList<Integer> getDado1() {
        return dado1;
    }
    
    public void setDado1(int dado1) {
        this.dado1.add(dado1);
    }

    public ArrayList<Integer> getDado2() {
        return dado2;
    }

    public void setDado2(int dado2) {
        this.dado2.add(dado2);
    }

    public int getJogo_id() {
        return jogo_id;
    }

    public void setJogo_id(int jogo_id) {
        this.jogo_id = jogo_id;
    }
    private int jogo_id;

    public Integer getJogador_id() {
        return Jogador_id;
    }

    public void setJogador_id(Integer Jogador_id) {
        this.Jogador_id = Jogador_id;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

package bean;

/**
 *
 * @author MaYcKoN
 */
public class Jogador implements Comparable<Jogador>{
    private int id;
    private String nome;
    private Double pontuacao_total;
    private int jogo_id;
   
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getJogo_id() {
        return jogo_id;
    }

    public void setJogo_id(int jogo_id) {
        this.jogo_id = jogo_id;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public Double getPontuacao_total() {
        return pontuacao_total;
    }

    public void setPontuacao_total(Double pontuacao_total) {
        this.pontuacao_total = pontuacao_total;
    }

    @Override
    public int compareTo(Jogador o) {
        return this.pontuacao_total.compareTo(o.getPontuacao_total());
    }
   
}

Classe de Controle:

[code]
public void lancarOsDados() throws ClassNotFoundException, SQLException{
JogadorDAO id = new JogadorDAO();
Jogada idjogada;
for(int s=0; s<obj.getQt_jogadores(); s++){
idjogada = new Jogada();
jogadaC.add(idjogada);

    }
    
	for(int i=0; i<obj.getQt_jogada(); i++){
	   for(int jogador=0; jogador<obj.getQt_jogadores(); jogador++){
                     
			  int dado1 = (int)(Math.random()*6+1);
			  int dado2 = (int)(Math.random()*6+1);

			  if(dado1>dado2){
                          jogadaC.get(jogador).setDado1(dado2);
                          jogadaC.get(jogador).setDado2(dado1);
			  }
			  if(dado1<dado2){
		           jogadaC.get(jogador).setDado1(dado1);
                       jogadaC.get(jogador).setDado2(dado2);
			  }
			  if(dado1==dado2){
			   jogadaC.get(jogador).setDado1(dado1);
                       jogadaC.get(jogador).setDado2(dado2);
			  }
       
	  }
       
}
  
}
 public void somarDados() throws SQLException, ClassNotFoundException{
   double soma = 0;
   double segundoDado=0;

	  for(int i=0; i<jogadorC.size(); i++){
		  segundoDado=0;
		  soma=0;
		  for(int p=0; p<obj.getQt_jogada(); p++){
			  soma += jogadaC.get(i).getDado1().get(p) +jogadaC.get(i).getDado2().get(p); // soma todas as jogadas
		  }
			  for(int dado2=0; dado2<obj.getQt_jogada(); dado2++){
				  segundoDado += jogadaC.get(i).getDado2().get(dado2);
			  }
			  soma += segundoDado/100;
			  // adiciona valor total para os jogadores.
			  jogadorC.get(i).setPontuacao_total(soma);
                             
	  }
              Collections.sort(jogadorC);
              Collections.reverse(jogadorC);
              isEmpateAleatorio(jogadorC);
              mostrarDados();

}
public void inserirJogador() throws ClassNotFoundException, SQLException{
JogadorDAO jogador = new JogadorDAO();
JogoDAO jogo = new JogoDAO();
for(int i=0; i<jogadorC.size(); i++){
jogadorC.get(i).setJogo_id(jogo.pegarUltimoJogo());
}
jogador.inserir(jogadorC);
}
public void inserirJogada() throws ClassNotFoundException, SQLException{
JogadaDAO jogada = new JogadaDAO();
JogoDAO jogo = new JogoDAO();
for(int i=0; i<jogadaC.size(); i++){
jogadaC.get(i).setJogo_id(jogo.pegarUltimoJogo());
}
jogada.inserir(jogadaC);
}
}[/code]

Quando eu ordenar o array de jogadores, queria ordenar as jogadas para os seus respectivos jogadores, para mostrar os dados reais que aquele jogador jogou. Mas nao estou conseguindo, tentei de varias maneiras aqui, mas nao obtive sucesso.
:roll: