Org.hibernate.id.IdentifierGenerationException e datas erradas

Olá!

Minha dúvida é a seguinte:

Tenho um calendário feito com <rich:column e <h:selectBooleanCheckbox .
Quando seleciono uma data e clico em “salvar”, ele deve comparar no banco de dados se já existe esta a data
marcada. Se existir, eu deleto as duas datas (eh isso mesmo deleto as DUAS datas…).

Problemas:

  1. Na hora de comparar as datas, ele deve comparar duas listas, uma auxiliar, que guarda as datas que acabei de marcar e uma
    lista com as datas que existem no banco. O que ocorre é que ele pega datas que não existem no banco, como “31/12/1969” e datas
    com ano errado como “21/02/3911”.
  2. Erro para salvar. Quando não há o que comparar, quando não existe nenhuma data salva no banco, ele da

“Caused by: org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save():”

Alguém tem alguma idéia para qualquer um desses problemas?
Obrigada.

1- Veja como está a formatação na hora de criar o date, pode ser por isso os valores estranhos, ou coloca o codigo ai para ajudar, pq assim apenas da para supor o que acontece.

2- Qual a id da classe? Pelo erro, ela está sem ser gerada automaticamente, e quando tu está dando o save ela vai null, por isso o erro.
Pode alterar para ser geração automatica, ou antes de salvar de uma chave de identificação.

Olá!

Aqui ele inicializa a data normalmente…

@Column(name="DATA", nullable=false)
@Type(type="date") 
private Date data = new Date(System.currentTimeMillis());

Aqui eu inicializo uma lista de meses, de dias da semana e uma lista auxiliar

List<Mes> listaMeses =  bean.getCalendario().getListaMeses();
List<DiasSemana> listaDiasSemana;
List<Date> listaAux = new ArrayList<Date>();

O erro ocorre aqui:

	for (int i = 0; i < bean.getListaDatasNoBanco().size();i++){
			for (int j = 0; j < listaAux.size(); j++){
				if(bean.getListaDatasNoBanco().get(i).getData().equals(listaAux.get(j))){  //Aqui ele coloca o ano como 3911
					listaDate.remove(j);
					bean.getListaDatasNoBanco().remove(i);
				}
			}

Eu tenho q inicializar List listaAux = new ArrayList(); ?

Obrigada

  1. Como eu faço essa chave de identificação?