Problema com Serialização quando uso LinkedList

Ola senhores,

Estou com um problema que já quebrei a cabeça 2 dias e não achei uma solução.
A aplicação é WEB, e guardo na sessão um objeto do tipo LinkedList. Esse objeto armazena dentro dele um objeto chamado Compra que tem o código mais ou menos assim

public class Compra implements Serializable {
	private static final long serialVersionUID = 1L;
	
	// -- Atributos -- //
	private String id;
	private int quantidade;
	private double valor;
	private Produtos produtos;
	
	// -- Getters and Setters -- //
	public boolean equals(Object obj) {
		if ((obj instanceof Compra) && (((Compra)obj).getId().equals(id))) {
			return true;
		} else {
			return false;
		}
	}
	public int hashCode() {
		return id.hashCode();
	}

Você podem ver que eu implementei o método equals e hashcode. Também existe um objeto do tipo Produtos e ele que dá problema. O objeto do tipo Produtos é mais ou menos assim

public class Produtos implements Serializable {
	private static final long serialVersionUID = 1L;
	
	// -- Atributos -- //
	private int id;
	private String nome;
	private String autor;
	private String tipo;
	private double preco;
                // -- Getters and Setters -- //
	public boolean equals(Object obj) {
		if ((obj instanceof Produtos) && (((Produtos)obj).nome.equals(nome) )) {
			return true;
		} else {
			return false;
		}
	}

	public int hashCode() {
		return nome.hashCode();
	}

Também implementei o equals e hashcode.

Quando eu jogo para a sessão a LinkedList, eu recebo uma exception que não pode serializar o objeto Compra.
Se dentro do objeto compra eu RETIRO o objeto PRODUTOS, a Serialização funciona.

Alguém poderia me ajudar a corrigir esse problema?
Obrigado